对javascript函数调用中不好理解的部分做了解析,和对this的再次理解
var click_fn = function(id){
alert(id);
};
var check_this_fn = function(){
alert($(this).val());
};
var check_param_fn = function(value){
alert(value);
};
click_fn();//undefined(1)
$("#all_checkbox").click(function () {
$("#checkbox").each(click_fn); //(2)
$("#checkbox").each(check_this_fn); //(3)
$("#checkbox").each(check_param_fn($(this).val()));//(4)
});
(1)调用函数没有传递参数,那么参数是undefined
(2)的返回值是0,1,2,3。。。。(有一组元素的id都为checkbox),一开始的时候觉得很是奇怪,转换一个思路也就说的通了。$("#checkbox").each(click_fn);等价于以下:
$("#checkbox").each(function(id){
alert(id);
});
(3)同样的思路来理解上面第三处调用地方的代码,自然this就是每个触发事件的对象,也就是id为checkbox的一组元素。
$("#checkbox").each(function(){
alert($(this).val());
});
(4)this表示的是"all_check"。按照上面的思路来理解,是不是就容易多了,那假如想要在调用check_param_fn时传递的是$("#checkbox"),怎么办?
$("#all_checkbox").click(function () {
var this_value = $(this).val();
$("#checkbox").each(function(this_value){
alert(value);
}); //all
});
//上面问题的解决方案:使用call()或者apply()控制this的值
var test_fn = function(id, flag){
this;//this is $checkbox not $("#all_checkbox")
};
$("#all_checkbox").click(function () {
var $checkbox = $("#checkbox");
test_fn.call($checkbox,id,flag);
});
$("#checkbox").click(check_this_fn);//(5)
$("#checkbox").click(function(){check_this_fn.call(this)}); //(6)
$("#checkbox").click(check_this_fn.call()); //(7)
(5)触发事件的对象是$("#checkbox")。并且只有在用户点击时才能触发事件
(6)触发事件的对象是$("#checkbox")。并且只有在用户点击时才能触发事件
(7)在load的时候触发事件
此外,对于this的学习,还要注意下面几点:
1.在用户自定义的函数内部使用this是有区别的
var fn_demo = function(name){
this.name = name;
};
var demo = new fn_demo("kkk");
demo.name;//"kkk"
var demo2 = fn_demo("kkkk");
demo2;//undefied
window.name;//"kkk"
使用new关键字实例化的对象为this赋值才可以成功。
2.当this值的宿主函数被封装在另一个函数内时,this永远是对head的引用
var fn = function(){
alert(this);
};
var test_1 = function(fn){
fn.call();
};
test_1(fn); //window
var obj = {};
obj.test_1 = test_1;
obj.test_1(fn); //window
obj.fn = fn;
obj.fn();//object
3.使用变量控制this的值
var obj = {};
var test_2 = function(){
var that = this;
var fn = function(){
alert(that);
}();
};
obj.test_2 = test_2;
obj.test_2(); //object
分享到:
相关推荐
以下是对给定文件信息中涉及的JavaScript函数调用规则的详细解析。 首先,构造器函数的命名规范被提出,它建议以大写字母开头,这个习惯可以作为提醒,在使用构造器函数时不要忘记使用`new`运算符。这是因为在...
JavaScript中的`this`...在实际开发中,尤其需要注意函数调用方式以及如何在事件处理、对象方法和构造函数中正确使用`this`。通过深入学习和实践,开发者可以更好地控制代码的执行环境,提升代码的可读性和可维护性。
本文将详细解析`this`在JavaScript中的工作原理及其绑定规则。 1. `this`并不总是指向函数自身 许多人可能认为在函数内部,`this`应该指向函数本身,但在JavaScript中,情况并非如此。以下示例展示了`this`的误导性...
这篇文章主要介绍了JavaScript中this函数使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 普通函数 普通函数中的this,普通函数中的this表示调用...
以下是对这个问题的深入解析和解决方案。 首先,让我们分析问题的核心:在Vue组件中,当我们在一个函数内部(比如`updateStudentInfoToServer`)使用`this`调用其他方法或访问数据属性时,如果这个函数被作为回调...
标题 "解析 this.initialize.apply(this, arguments)" 涉及到的是JavaScript编程中的一个关键概念,尤其是在对象构造和类继承的情景下。`this` 关键字在JavaScript中扮演着核心角色,它指的是函数调用时的上下文,而...
### JavaScript工厂模式与构造函数模式创建对象方法解析 #### 一、工厂模式 在JavaScript中,工厂模式是一种常用的设计模式,用于封装创建对象的过程。它通过一个函数来创建具有相似特性的多个对象实例,这些对象...
在Flash中,如果希望调用JSP页面上的JavaScript函数,则可以使用`ExternalInterface.addCallback`方法。此方法可以注册一个回调函数,该回调函数能够在Flash端执行后被调用。 ```actionscript // Flash端代码 ...
- **普通函数调用**: 如果一个函数被简单地调用(即不作为对象方法调用),那么`this`通常指向全局对象(非严格模式)或`undefined`(严格模式)。 - **作为对象方法调用**: 当函数作为对象的方法被调用时,`this`...
根据给定的文件信息,以下是对“javascript函数大全”中涉及的关键知识点的详细解析: ### 1. `document.write("")` `document.write()`是用于在HTML文档中写入文本、HTML表达式或JavaScript代码的函数。它常用于...
- `arguments`对象:它是一个类数组对象,包含了函数调用时传入的所有参数,即使参数数量与定义时不匹配。`arguments.callee`属性指向当前执行的函数。 - `this`关键字:`this`在函数内部指向调用该函数的对象。在...
在本文中,我们将深入探讨如何使用C#和JavaScript这两种编程语言来调用Web服务,特别是那些使用XML(可扩展标记语言)进行数据交换的Web服务。 **C#调用Web服务** 在C#中,我们通常使用.NET框架提供的`System.Web....
- JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - JSON数据格式基于JavaScript的一个子集,通常用于服务器向网页发送数据,或存储在本地存储...
当JavaScript调用Java方法时,`Chromium`会生成一个JNI函数调用,再由Java层的反射机制执行相应的方法。 总结: Android调用JavaScript以及JavaScript调用Android是Android应用开发中的重要技能,它允许我们充分...
在非严格模式下,函数调用的`this`指向全局对象(浏览器环境中的`window`),而在严格模式下,`this`为`undefined`。 2. **方法调用**:如`o.add()`。在这种情况下,`this`指代调用该方法的对象,即`o`。 3. **...
- **上下文**:在函数调用中,`this`关键字的值取决于函数调用的方式。在全局环境中,`this`指向全局对象;在函数调用中,`this`通常指向调用该函数的对象。 6. **`Function`类型函数的特性** - `Function`是...
深入理解JavaScript系列(4):立即调用的函数表达式 深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP 深入理解JavaScript系列(7):S.O.L.I.D...
JavaScript函数集是编程语言JavaScript中的一个重要组成部分,它包含了一系列预定义的函数,这些函数可以帮助开发者完成各种任务,从处理字符串到操作数组,再到控制流程,无所不包。在这个"JavaScript 函数集"中,...
总结来说,JavaScript中的柯里化是一种强大的编程技术,它允许我们将多参数函数分解为一系列单参数函数,从而提高了代码的灵活性和可读性。通过手动实现或者使用柯里化辅助函数,我们可以轻松地在JavaScript中应用这...