使用$ .extend扩展对象时有没有办法访问超级对象?
我想扩展一个对象,覆盖一个方法,但是在子类方法中调用重写的超类方法。
答案 0 :(得分:6)
不,因为没有超类。根据{{3}}的文档:
描述:将两个或多个对象的内容合并到第一个对象中。
为了调用“超类”方法,您必须在某处保留“超类”的副本(可能作为“后代”对象中的参数),并直接在“超类”上调用该方法
答案 1 :(得分:3)
如果您正在寻找javascript继承,您可能会对John Resig的this post感兴趣。
答案 2 :(得分:1)
不直接 - 旧方法不再存在(原始对象除外)。
我做了两件事:第一件事是在子类中使用新名称复制旧方法:
var Super = {
a: function() {...}
};
var _SubFuncs: {
_superA: Super.a
a: function() {... this._superA(...) ... }
};
var Sub = $.extend(false, Super, _SubFuncs);
我在适当的时候做的另一件事是使用模板模式并让超类调用一个方法,因为它没有行为。然后子类将行为添加到空方法。这仅适用于您的呼叫结构可以适当添加“漏洞”的情况。
编辑:在我的情况下,我真的试图坚持原型对象,所以我避免使用一般解决方案,使我的对象更像类。
答案 3 :(得分:0)
如果你想使用类继承并调用超类方法,那么John Resig的这篇博客解释了它http://ejohn.org/blog/simple-javascript-inheritance/