日期:2015-04-13
作者: Barret Lee
网友问题:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return this.name;
}
};
var a = object.getNameFunc;
alert(a());
alert(object.getNameFunc());
原因:
object.getNameFunc()
,此时的 object.getNameFunc
为引用类型,其 base 为 object
,this 指向的是 base,所以返回 object.name
的值
name = object.getNameFunc
, test
作为标识符,生成了其他引用类型的值,此时 base 已经从 object
重置为 null
,也就是会指向 global(window),所以返回的是 window.name 的值。
问题的关键在于「引用类型(type Reference)的中间值发生改变」