Javascript 通过$.extend从父类继承
以下两种继承方法的区别是什么Javascript 通过$.extend从父类继承,javascript,jquery,inheritance,Javascript,Jquery,Inheritance,以下两种继承方法的区别是什么 Subclass.prototype = $.extend(true, {}, Parent.prototype, proto); 及 每种方法的利弊 谢谢 EDIT:我目前正在使用第1种方法来扩展我的类,但我正在考虑实例化一个父对象,以便调用父类的构造函数。尽管我不相信我总是希望…主要区别在于第二个示例new Parent(),您实际上正在调用Parent并创建一个新对象,这可能会导致意外问题 与第一个示例一样,在原型中使用$.extend,不会运行任何代码。j
Subclass.prototype = $.extend(true, {}, Parent.prototype, proto);
及
每种方法的利弊
谢谢
EDIT:我目前正在使用第1种方法来扩展我的类,但我正在考虑实例化一个父对象,以便调用父类的构造函数。尽管我不相信我总是希望…主要区别在于第二个示例new Parent(),您实际上正在调用Parent并创建一个新对象,这可能会导致意外问题 与第一个示例一样,在原型中使用$.extend,不会运行任何代码。jQuery将查看原型并为您扩展对象,并且不会有运行Parent()可能产生的副作用 我无法像这个答案最高的人那样解释清楚: 下面是链接答案中的一段引语 这个例子会起作用,你也会 在许多教程中都可以看到类似的代码。 但是,老兄,这种新的形状太难看了: 我们正在实例化基类 即使没有实际的形状 创建。它正好在这个地方起作用 简单的情况下,因为JavaScript是如此 sloppy:它允许使用零个参数 传入,在这种情况下是x和y 未定义并分配给 原型是这个.x和这个.y。如果 构造函数正在执行 任何更复杂的事情都会发生 趴在它的脸上
此行出现在何处:
$.extend(true,this,parent)代码>?调用它的位置很重要,因为this
的值取决于上下文。这在全局范围内吗?啊,对不起,它会在类的构造函数中调用,我会编辑帖子谢谢链接。是的,我考虑这个问题的原因是因为我认为可能有一些情况下我希望运行父级的构造函数(例如设置实例级属性),但我认为我将坚持使用第一种(当前)方法
function Subclass(){
var parent = new Parent();
$.extend(true, this, parent);
}