本帖最后由 jonzrj 于 2014-02-07 14:38:40 编辑

解决方案 »

  1.   

    你的object.getNameFunc()返回了一个匿名函数,然后调用执行这个匿名函数。
    因为这个匿名函数不是作为某个对象的方法来调用执行,所以它的this就是wlndow对象
      

  2.   

    功力不足,说不清。不知有没有人说的清。
    var name = "The Window";var object = {
        name : "My Object",
     
        getNameFunc : function(){
            return (function(){
                return this.name;
            }.bind(this));
        }
    };
     
    alert(object.getNameFunc()()); 
      

  3.   

    匿名函数是不是永远不能作为某个对象的方法吗?小白提问,可能问不好。        var name = "The Window";
            
            var object = {
                name : "My Object",
            
                getNameFunc : function(){
                    return function(){
                        return this.name;
                    };
                }
            };        var f = object.getNameFunc();
            object.z = f; //把匿名函数赋值给对象的方法,
    alert(object.z()); //再以对象的方法来调用执行 alert(f.call(object)); //或者用call来强行指定对象
      

  4.   

    要弄明白this,你只需要找到在哪个作用域下执行this就是指向哪个对象你那句拆解后就如下    alert(object.getNameFunc()());  //"The Window"
        var func = object.getNameFun();
        alert(func());//这样看明白了吧