D1
,D2
(扩展名为d1
,d2
)是否等效?如果有的话,它们之间有什么显着的差异?
另外,我应该如何通过D1
使D2
和Base.prototype
的原型无法修改?这样就不会显示baz
。
var d1, d2
function Base() {this.foo = 'foo'}
Base.prototype.bar = 'bar'
function D1() { }
D1.prototype = new Base()
function D2() {Base.call(this)}
D2.prototype = Object.create(Base.prototype)
Base.prototype.baz = 'baz'
d1 = new D1()
d2 = new D2()
console.log(d1.foo, d1.bar, d1.baz)
//-> foo bar baz
console.log(d2.foo, d2.bar, d2.baz)
//-> foo bar baz