代码之家  ›  专栏  ›  技术社区  ›  Steve

jquery-扩展和访问超类

  •  9
  • Steve  · 技术社区  · 15 年前

    使用$.extend扩展对象时,是否有方法访问超级对象?

    我想扩展一个对象,重写一个方法,但在子类方法中调用重写的超类方法。

    4 回复  |  直到 12 年前
        1
  •  6
  •   Justin Ethier    15 年前

    不,因为没有超类。根据文件 jQuery.extend :

    描述:将两个或多个对象的内容合并到第一个对象中。

    为了调用“超类”方法,您必须在某个地方保留“超类”的副本(可能作为“子类”对象中的参数),并直接在“超类”上调用该方法。

        2
  •  3
  •   James Westgate    15 年前

    如果您正在寻找javascript继承,您可能会对 this post 约翰·雷西格的信。

        3
  •  1
  •   Kathy Van Stone    15 年前

    不是直接的——旧方法不再存在(除了在原始对象中)。

    我已经做了两件事:第一件事是用子类中的新名称复制旧方法:

    var Super = {
      a: function() {...}
    };
    
    var _SubFuncs: {
      _superA: Super.a
    
      a: function() {... this._superA(...) ... }
    };
    
    var Sub = $.extend(false, Super, _SubFuncs);
    

    我在适当的时候做的另一件事是使用模板模式,让超级类调用一个对它没有行为的方法。然后子类向空方法添加行为。只有当调用结构使“洞”可以适当地添加时,这才有效。

    编辑:在我的例子中,我真的试图坚持原型对象,所以我避免了一个使我的对象更像类的通用解决方案。

        4
  •  0
  •   Rajiv    12 年前

    如果您想使用类继承并调用超级类方法,那么john resig的这个博客将解释这一切 http://ejohn.org/blog/simple-javascript-inheritance/