javascript - 在 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
最后存放在哪里?如何检查/显示它?
解决方案
使用 ES6 class
,它在原型上继承自父类(构造函数对象):
function MyConstructor() { /* … */ }
MyConstructor.STATIC_PROPERTY = 'static';
class ChildClass extends MyConstructor { /* … */ }
console.log(ChildClass.STATIC_PROPERTY);
另一种方法是复制所有属性(如 with Object.assign
)或Object.setPrototypeOf
在ChildClass
.
推荐阅读
- pdf - 如何覆盖 Drupal 8 dompdf dpi?
- angular - 是否有任何选项可以延长在 mat-select 中的搜索时间
- perl - 如何从 CPANPLUS 向 CPAN 测试人员发送 PASS 报告?
- data-structures - 是否存在仅在文本文件中逐行插入和搜索特定单词的最佳数据结构?
- python - 比较2个excel文件python
- ms-access - ConcatRelated函数和第五个参数
- database-design - 跟踪订单的交付——使用触发器还是从数据中派生?
- powershell - 如果您在 vscode 中缩进,Here-string 不起作用
- css - 反应和基础:不能使用行类
- continuous-integration - Gitlab-CI:合并后参考源分支运行部署阶段