我们都知道,在方法调用中,this指代的是方法所属的对象,如以下代码:
obj.test(console.log(this === obj)); //返回true
但是在嵌套函数中,情况就发生了很大变化。这需要分为两种情况:严格模式和非严格模式
//非严格模式下var obj = { test:function (){ var self = this; console.log(this === obj); //true f(); function f(){ console.log(this === obj); //false console.log(self === obj); //true console.log(this === window); //true }; } };obj.test();
//严格模式下"use strict"var obj = { test:function (){ var self = this; console.log(this === obj); //true f(); function f(){ console.log(this === obj); //false console.log(self === obj); //true console.log(this === window); //false console.log(this === undefined); //true }; } };obj.test();