【发布时间】:2015-04-27 01:18:37
【问题描述】:
在 JS 中扩展类的传统方式是这样的:
// define constructor function
function Fuu(){}
// extend prototype and override prototype's constructor
Fuu.prototype = Object.create(OtherClass.prototype, {
constructor: {
value: Fuu,
enumerable: false,
writable: true,
configurable: true
}
});
然后你将你想要的方法添加到原型中
Fuu.prototype.method = function() {}
就像你有一个扩展另一个函数一样。一个很好的 JS 继承示例!
我的问题是当子类已经有一个带有方法和属性的原型时如何扩展。我可以尝试使用for in 循环将旧原型的方法复制到新原型,但这些方法是不可枚举的(类是使用转译器创建的)并且使用getOwnPropertyNames 做某事似乎不对。有什么建议吗?我可以做一些事情,比如保留原型并在原型中添加原型吗?
编辑:示例
class Fuu {
someMethod(){} // non enumerable method in Fuu's prototype
}
// My first option: (extending this way `someMethod` is lost)
Fuu.protoype = Object.create(HTMLElement.prototype, {//...same as before})
// Option 2: copy methods from old to new prototype
// Option 3: prototype of prototype?
// Fuu.prototype.prototype = Object.create(HTMLElement.prototype, {...})
【问题讨论】:
-
你能举个例子说明你正在尝试做什么吗?