以下两种继承方法有何不同?
Subclass.prototype = $.extend(true, {}, Parent.prototype, proto);
和
function Subclass(){
var parent = new Parent();
$.extend(true, this, parent);
}
每种方法的优缺点?
谢谢!
编辑:我目前正在使用第一种方法来扩展我的类,但我正在考虑实例化一个父对象,以便调用Parent类的构造函数。虽然我不相信我总是想要那个......
答案 0 :(得分:3)
主要区别在于第二个示例,新的Parent(),您实际上正在调用Parent并创建一个可能导致意外问题的新对象。
像第一个例子一样使用$ .extend和原型,不会运行任何代码。 jQuery将查看原型并为您扩展对象,并且不会出现运行Parent()的可能的副作用
除了拥有最佳答案的人之外,我无法解释它: How to "properly" create a custom object in JavaScript?
以下是链接答案的引用
这个例子可行,你会的 在许多教程中看到类似的代码。 但是男人,新的Shape()是丑陋的: 我们正在实例化基类 即使没有实际的形状 创建。它碰巧在此工作 简单的情况因为JavaScript是如此 草率:它允许零参数 传入,在这种情况下x和y 变得未定义并被分配给 原型的this.x和this.y.如果 构造函数正在做 更复杂的是,它会 脸色平缓。