我在当前项目中使用的设计模式是:
var MyConstructor = function() { ... };
MyConstructor.STATIC_PROPERTY = 'static';
现在如果我想从 MyConstructor 类继承,我会这样做:
var ChildClass = function() { ... };
ChildClass.prototype = new MyConstructor(); // Or Object.create(...)
ChildClass.prototype.constructor = ChildClass;
问题是 ChildClass.STATIC_PROPERTY
未定义/未继承 ...
有办法解决吗?
次要问题:
如果我 console.log(MyConstructor)
,我会得到 function() { ...}
而关于 MyConstructor.STATIC_PROPERTY
当它实际存在时。 STATIC_PROPERTY
最后存储在哪里?如何检查/显示它?
最佳答案
使用 ES6 class
,它的原型(prototype)是从父类(构造函数对象)继承的:
function MyConstructor() { /* … */ }
MyConstructor.STATIC_PROPERTY = 'static';
class ChildClass extends MyConstructor { /* … */ }
console.log(ChildClass.STATIC_PROPERTY);
另一种方法是复制所有属性(如使用 Object.assign
)或在 ChildClass
上使用 Object.setPrototypeOf
。
关于javascript - 在 Javascript 中继承静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101101/