this关键字的理解:
JS的this关键字表示的是当前行为的执行主体,this只与执行的主题有关,与函数在哪执行和定义无关。
this的判定:
(1)函数执行时,首先看函数名前是否有" . ",有的话,this就是指向" . "前面的执行主体;否则就指向window。
(2)立即执行函数的this永远指向window。
(3)给元素的某一事件绑定方法,当事件触发时,执行相应的方法,方法中的this就时指向当前元素。
(4)如图补充说明:
补充说明(5)使用构造函数创建实例时,函数体中的this指向new出来的实例对象,实例对象中定义的方法中的this需要看具体的执行主体,无法确定;构造函数原型prototype的方法中的this指向实例对象;如图中实例对象中定义的方法中的this就指向了window:
实例方法被保存到全局作用域详解构造函数与不同函数this的差别:
//函数预编译过程this ——> window,运行机制如下:
function Test(){
var a = 1;
function b(){ }
//预编译产生AO对象:
/*AO{
a :undefined,
b :function(){ },
arguments : undefined,
this : window
*/
}
Test();
//当把函数当作构造函数执行时,new的使用会使this的指向发生变化,具体细节前面笔记以写出
//var test = new Test();
网友评论