javascript中的原型继承问题
我理解什么是原型继承,但我必须对实现感到困惑。我认为修改函数构造函数的原型会影响该构造函数的所有实例,但事实并非如此。 JS如何从对象查找方法到其原型?
这是一个例子
function A(name){
this.name = name;
}
a = new A("brad");
A.prototype = {
talk: function(){
return "hello " + this.name;
}
}
a.talk() // doesn't work
b = new A("john");
b.talk() // works
我的印象是a
会在A
的原型中寻找方法talk()
,所以在inst1ѭ实例化之前或之后对A
原型的任何修改都会被反映出来,但似乎并非如此。有人可以帮我解释一下吗?
没有找到相关结果
已邀请:
2 个回复
惭法搽
这是正在发生的事情:
疾很毋悲
请确保以后不要更换它(除非那是你要做的)。 在您的原始示例中,
在您创建第一个实例时没有自定义原型,但是在您创建第二个实例时它确实拥有它,因为您在两者之间创建了原型。 原型链是在实例化对象时建立的,因此正如您所演示的那样,同一“类”的两个实例可能具有不同的原型。 这可能会导致各种麻烦:
所指的对象不再被视为
的实例,因为
通过检查
是否在
的原型链中起作用。