我在玩 JavaScript,特别是用类和诸如此类的东西模拟面向对象的编程。
我知道这种实现继承的方式
MyClass.prototype = new AnotherClass();
但我并不满意,我不喜欢我需要调用AnotherClass
. 所以我在玩,我想出了一些似乎有效的东西,基本上想要第二个意见。
function clone (obj)
{
function CloneFactory () {}
CloneFactory.prototype = obj;
return new CloneFactory();
}
MyClass.prototype = clone(AnotherClass.prototype);
通过克隆原型,我们得到它的一个新副本并将其分配给MyClass
' 原型,这样更改继承的属性就不会影响父原型的属性。像这样会MyClass.prototype = AnotherClass.prototype
。
我进行了压力测试,这在某些情况下效率更高,即当父构造函数中有很多代码时,其他情况大致相同。另一个好处(或者至少我发现它是有益的)是它允许在某种程度上隐藏子类的信息。任何特权方法和成员都不会被继承。
是否有一些我忽略的重大陷阱?
我不是 JavaScript 专家,实际上我对 JavaScript 还很陌生,所以我想对此发表第二意见,因为我似乎无法通过 Google 找到任何东西。我不想实现糟糕的代码:)!