本帖最后由 cxl444905143 于 2014-12-01 14:22:20 编辑

解决方案 »

  1.   

    按照js权威指南里的那句话,赋值表达式的值是右操作数的值,(object.getName = object.getName),而右边的 object.getName 只是属性访问,没有进行函数调用,所以没有绑定this(函数调用时添加变量对象,绑定this),所以赋值表达式的值是这个没有绑定 this 的函数对象。是不是这样?
      

  2.   

    不要想的那么复杂!你说的不对!
    是这样的,赋值表达式是有返回值的!而这个返回值就是等号后面那个的内容‘可能是字符串,数字,对象,函数.....’
    当执行object.getName = object.getName的时候,虽然对object.getName本身没有任何影响,但是这个赋值表达式返回一个函数表达式:function(){
           return this.name;
    }并且直接挂到了window对象上!所以后面的还用说么.....,就相当于这样了(function(){
           return this.name;
    })()
      

  3.   

    不对,绑定到this了,只不过现在的this指向的是windowvar name = "The Window";
                 
                var object = {
                    name : "My Object",
                 
                    getName: function(){
                        console.log(this);
                        return this.name;
                    }
                };
                (object.getName = object.getName)()
      

  4.   

    已经知道怎么回事儿了,看这篇文章  http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html
      

  5.   

    已经知道怎么回事儿了,看这篇文章  http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html

    发的地址不错,学习了,又涨知识了。
      

  6.   

    谢谢这个问题,结合众大神讲解,再看下 《javascript语言精粹》 算是明白了……