(function() {
var obj = {};
var z = 'zhangsan';
obj.showName = function() {
alert(this);
};
window.ar = obj.showName;
})();
ar();
................1
var obj = {};
var z = 'zhangsan';
obj.showName = function() {
alert(this);
};
obj.showName();..................2
为什么1得到的是window 2得到的是object
1为什么不是object呢,应该是obj啊,obj是调用者
var obj = {};
var z = 'zhangsan';
obj.showName = function() {
alert(this);
};
window.ar = obj.showName;
})();
ar();
................1
var obj = {};
var z = 'zhangsan';
obj.showName = function() {
alert(this);
};
obj.showName();..................2
为什么1得到的是window 2得到的是object
1为什么不是object呢,应该是obj啊,obj是调用者
(function() {
var obj = {};
var z = 'zhangsan';
obj.showName = function() {
alert(this);
};
window.ar = obj;
})();
ar.showName();obj 被释放了 showName没有了父级 被指向了window
改了下 你的例子 这个指向的是object 了
作为obj的方法调用this指向obj,直接调用(相当于作为window的方法调用)则this指向window,能够理解吧?
这句话的意思是将 obj.showName;这个函数复制一份到window.ar上面,
我把这个理解成把obj赋给ar了
window.ar = obj.showName;这一句使得window.ar和obj.showName最后都指向同一个函数==
==>function() { alert(this);}。
而函数中的this是啥完全取决于函数真正执行时的那条语句:
window.ar()//这是函数作为window的属性调用,this就是window
obj.showName()//这是函数作为obj的属性调用,this就是obj