通过$ .extend从Parent Class继承

时间:2011-04-05 15:30:39

标签: javascript jquery inheritance

以下两种继承方法有何不同?

Subclass.prototype = $.extend(true, {}, Parent.prototype, proto);

function Subclass(){
    var parent = new Parent();
    $.extend(true, this, parent);
}

每种方法的优缺点?

谢谢!

编辑:我目前正在使用第一种方法来扩展我的类,但我正在考虑实例化一个父对象,以便调用Parent类的构造函数。虽然我不相信我总是想要那个......

1 个答案:

答案 0 :(得分:3)

主要区别在于第二个示例,新的Parent(),您实际上正在调用Parent并创建一个可能导致意外问题的新对象。

像第一个例子一样使用$ .extend和原型,不会运行任何代码。 jQuery将查看原型并为您扩展对象,并且不会出现运行Parent()的可能的副作用

除了拥有最佳答案的人之外,我无法解释它: How to "properly" create a custom object in JavaScript?

以下是链接答案的引用

  

这个例子可行,你会的   在许多教程中看到类似的代码。   但是男人,新的Shape()是丑陋的:   我们正在实例化基类   即使没有实际的形状   创建。它碰巧在此工作   简单的情况因为JavaScript是如此   草率:它允许零参数   传入,在这种情况下x和y   变得未定义并被分配给   原型的this.x和this.y.如果   构造函数正在做   更复杂的是,它会   脸色平缓。