仓库源文站点原文


title: this的指向 categories:


网友问题:

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)的中间值发生改变」