解决方案 »

  1.   

    作用域 第一段都指向window里的sayname 所以是同一个函数
    第二段指指向构造函数里的sayname 所以不是同一个
      

  2.   

    第二段不是同一个?为什么两次实例化都跑同一个构造函数。都是使用同样的函数引用function sayName () {
                    // 将sayName写在构造函数内部
                    return this.name;
                },怎么会是不同是函数呢?
      

  3.   

    后面本人换了个思路去理解。
    如果使用fun都是obj对象和垃圾回收以及闭包去理解的话,那么第二段把函数放在构造函数内部里面的话,
    这里每次跑完这个构造函数的时候,这个闭包的作用域都完结了【外部没有引用这个函数了】。也就是说出了这个引用了。垃圾回收这个函数了。下次,再跑进来的时候,重新在堆中创建了一个function来给this.sayName去引用了。所以,是可以使用function sayName () {
                    // 将sayName写在构造函数内部
                    return this.name;
                }这种方式去理解的。而第一种方式sayName这个函数一直被window引用,没有被垃圾回收,this.sayName 都指向了Window的sayName方法了。
    这样应该是能说的通的。