首先先引入一道题
function A() {
this.do=function() {return ‘foo’;};
}
A.prototype=function() {
this.do=function() {return ‘bar’};
};
var x=new A().do();
x 的值是:
这里有四个选项
bar报错fooundefined
一开始可能会选择bar,因为看起来重写原型了。答案是foo.因为这里原型被重写了,切断了原型和实例之间的关系。来看一下控制台
可能不好理解,我们现在换一个方法,换成todo,如下
出现这个错误意味着找不到这个方法,说明我们原型和实例之间的关系被切断了,所以没办法影响到实例。除非我们这样写
才能正常输出