我知道原型在JavaScript中的所有类实例之间共享。那么下面的行为是什么解释。
function Parent() {}
Parent.prototype.a = 3
var p1 = new Parent()
var p2 = new Parent()
p1.a
=> 3
p2.a
=> 3
p1.a = 10
=> 10
p2.a
=> 3
我知道通常我们应该把函数放在原型中,但为什么上面没有改变所有实例的prototype.a
值。
但是以下工作:
function Parent () {}
Parent.prototype.prop = {a:1}
var p1 = new Parent()
var p2 = new Parent()
p1.prop.a
=> 1
p2.prop.a
=> 1
p1.prop.a = 10
=> 10
p2.prop.a
=> 10
为什么它适用于对象而不是基本类型?