解决方案 »

  1.   

    推荐下我自己的一些关于this的总结,有兴趣,可以看下~~函数中this的指向-简单认识
    构造函数模式的一点新的认识如何您可以仔细的看完,应该会有不少收获的。
      

  2.   


    这些我都看了,还是不知道为什么答案是那些,我估计是函数调用理解的不透彻,你能帮我解释下这些函数调用的区别吗? var sss = a.sayName;
        sss(); //this.name = ?
        a.sayName(); //this.name = ?
        (a.sayName)(); //this.name = ?
        (b = a.sayName)();//this.name = ?
      

  3.   

    //我现在也不知道你理解到哪个程度了,
    //所以,也不知道从哪里说起。//就拿你贴的这几行代码说下var name = "window",
    a = {
    name:"a",
    sayName:function(){
    console.log(this.name);
    }
    },
    sayName = a.sayName;

    a.sayName();
    sayName();console.log(sayName === a.sayName);
    //true,表示这两个实际上,就是一个函数。
    //验证:
    var fn1 = function(){},
    fn2 = function(){};
    console.log(fn1 == fn2);
    //false,就算是两个完全看起来一模一样的函数,
    //如果是不同的function定义,那么它们都不会相等,更不会恒等。
    //所以,上面的sayName,代表的同一个函数。//而a.sayName内部的this是指向a对象的
    //sayName内部的this,是指向window对象的//那么对于下面的代码:
    (a.sayName)(); //this.name = ?
    //这里的括号,其实是没有用的,这个括号根本就不会执行什么
    //所以,可以看做是直接a.sayName();(b = a.sayName)();//this.name = ?
    //而这里就不同了,这里第一个括号,首先会执行的一个步骤,
    //就是赋值运算
    //b = a.sayName,然后再执行调用这个函数
    //b();
    因为,我说问题或者解释东西,都是以我自己的理解再说,我可能考虑不到,对方是如何进行理解的,所以,总会有时候,我想要表达的,对方也理解不了,所以,如果您不能理解我说的,麻烦您就直接把您的疑问,比较确切的说下,这样,也算是共同学习进步嘛,一直认为,如果不能把一个问题说明白,就是没有真正的理解这个问题。