1:this 的理解比较好的书是 《Javascript语言精粹》
平时我们全局写 var a = 1, 其实就是 window.a = 1;
var f = function(){}, 其实就是 window.f = function(){}
当执行 f(), 相当于执行 window.f(), 那么f 里的 this 是调用它的对象, 即window
var obj = {f: function(){} }, 当执行 obj.f(); 那么调用 f 的是 obj对象, 则 f 里的 this 指向 obj
看下面的代码,当执行 obj.f() 时, f 里面的 this 指向obj, 但是 func 里面的 this 不是指向obj, 这是 语言设计上的一个错误;
从另一个层面上说,在 obj.f 函数里面是 没有对象调用func,这个时候我们默认定义它的 this 是 window
var obj = { a: 1, f: function(){ var func = function(){ console.log(this.a); } func(); } }
总结:
this 的指向就是谁调用这个函数, this 就是指向谁。
比如 obj.f(), this 指向 obj; obj.obj2.obj3.f(), this 指向 obj.obj2.obj3。
当找不出调用这个函数的对象时, this 指向 window.
时间: 2024-10-06 03:07:33