我创建了2个原型实例,在原型中更改了一个函数,两个实例中都反映了变化(很棒).但是,当我通过删除函数修改原型时,该函数仍然存在于现有实例中.
function A() {
this.name = "cool";
}
A.prototype = {
howCool: function() {
return this.name + "er";
}
};
var a1 = new A(),
a2 = new A();
a1.name = "hot";
//line1
console.log(a1.howCool());
//line2
console.log(a2.howCool());
A.prototype = {};
//line3
console.log(a1.howCool());
//line4
var a3 = new A();
console.log(a3.howCool());Run Code Online (Sandbox Code Playgroud)
第1行和第2行按预期工作,在将原型设置为空后,第4行显示未定义的预期值.但是第3行仍然显示了函数定义.