Dam*_*jan 3 javascript inheritance lodash
我试图使用Lo-Dash javascript库在javascript中模拟继承.
我只是使用_.extend这样做:
function Parent() {
var self = this;
self.hello = function () {
console.log('Hello from parent');
};
}
function Child() {
var self = this;
_.extend(self, Parent);
}
Child.hello(); // Doesn't exist
Run Code Online (Sandbox Code Playgroud)
我认为这可行,因为所有的javascript函数都是对象,但显然我错了.为什么这不起作用,我将如何使用Lo-Dash正确模拟继承?
Parent只是Parent类的构造函数,它本身不具有hello它添加的属性self.你可以改变这一_.extend行:_.extend(self, new Parent())解决它.这工作,因为对象返回的new Parent()确实有一个hello该属性_.extend可以通过复制到self.
要访问该hello属性,您还必须创建该类的实例,Child而不是hello在构造函数上访问.进行上述更改后,(new Child()).hello()应该工作,因为您访问实例hello上的属性而不是构造函数.Child
但是,在我看来,这似乎是一个糟糕的解决方案,因为它new Child() instanceof Parent会回归false.如果你想正确设置原型链以便继续进行"真正的"继承,你应该阅读有关伪造的原型和原型继承.
| 归档时间: |
|
| 查看次数: |
5887 次 |
| 最近记录: |