this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。
this的指向大致可以分为以下四种:
◎ 作为对象的方法调用
◎ 作为普通函数调用
◎ 构造器调用
◎ Function.prototype.call或Function.prototype.apply调用
丢失的this:
var obj={
myName:"sven",
getName:function(){
return this.myName;
}
}
console.log(obj.getName());//输出:"sven"
var getName2 = obj.getName;
console.log(getName2());//输出:"undefined"
分析:
验证:
//设置全局变量
var myName = "Windows.name";
var obj={
myName:"sven",
getName:function(){
return this.myName;
}
}
console.log(obj.getName());//输出:"sven"
var getName2 = obj.getName;
console.log(getName2());//输出:"Windows.name"
apply和call方法的用法:
apply(obj,[argument1,argument2,….]) 接收两个参数:【参数1】一个对象,用于指定this的指向,默认不设置或者设置为null的情况下指向的是window。【参数2】传入参数的一个数组,参数个数是确定的。
call(obj,argument1,argument2,….) 接收不确定参数:【第一个参数】一个对象,用于指定this的指向,默认不设置或者设置为null的情况下指向的是window。【后面的参数】传入的参数,参数个数是不确定的。
代码验证:
bind()的用法:
接着上面的代码:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。