首页 > 解决方案 > 在 Javascript 中继承静态属性

问题描述

我在当前项目中使用的设计模式是:

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最后存放在哪里?如何检查/显示它?

标签: javascriptclassinheritancepropertiesstatic

解决方案


使用 ES6 class,它在原型上继承自父类(构造函数对象):

function MyConstructor() { /* … */ }
MyConstructor.STATIC_PROPERTY = 'static';

class ChildClass extends MyConstructor { /* … */ }
console.log(ChildClass.STATIC_PROPERTY);

另一种方法是复制所有属性(如 with Object.assign)或Object.setPrototypeOfChildClass.


推荐阅读