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了