this老是指向一个对象,而具体指向哪一个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。
this的指向大体能够分为如下四种:
◎ 做为对象的方法调用
◎ 做为普通函数调用
◎ 构造器调用
◎ Function.prototype.call或Function.prototype.apply调用数组
var obj={ myName:"sven", getName:function(){ return this.myName; } } console.log(obj.getName());//输出:"sven" var getName2 = obj.getName; console.log(getName2());//输出:"undefined"
分析:闭包
验证:app
//设置全局变量 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(obj,[argument1,argument2,….]) 接收两个参数:【参数1】一个对象,用于指定this的指向,默认不设置或者设置为null的状况下指向的是window。【参数2】传入参数的一个数组,参数个数是肯定的。
call(obj,argument1,argument2,….) 接收不肯定参数:【第一个参数】一个对象,用于指定this的指向,默认不设置或者设置为null的状况下指向的是window。【后面的参数】传入的参数,参数个数是不肯定的。
代码验证:函数
接着上面的代码:this