原型链的一些题

 function A(){
            this.do = function(){return 'foo'}
        }
 A.prototype = function(){
            this.do = function(){return 'bar'}
        }
        var x = new A().do()
        console.log(x)  // 输出foo
解析:x找do的时候只能从A上找,当A有do时,就执行并输出,当A没有do时,即使A.prototype添加了do,也会报错do is not function;A的原型被重写,切断了原型和实例的线。
 
function A(){...}时打印A.prototype 得到的是 constructor{f},里面包含constructor:f A() 和 __proto__:Object
A.prototype 修改prototype时,打印A.prototype,已经不是指向constructor了,切断了constructor,指向一个新的区域,输出的不是A的,相当于一个新的函数,已经不是x new的那个构造函数A了
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/zhoujingye/p/12534797.html