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 次 |
最近记录: |