返回包含在原型类型对象javascript中的HTML元素

时间:2013-05-15 14:15:35

标签: javascript

如果我想返回一个包含在原型定义对象中的HTML dom元素,以便能够访问添加到原型的方法,那么我将如何处理它。 我想要实现的更具体的例子如下:

(function(window, document, undefined) {

    var i;
    var el;

    var Dome = function(selector, getAllMatches) {
        return Dome.core.init(selector, getAllMatches);
    };

    Dome.core = Dome.prototype = {
        constructor: Dome,
        el: "",
        init: function(selector, getAllMatches) {

            if (typeof arguments[0] !== "undefined") {
               this.el = getElement(selector);
                       if (this.el instanceof Dome){
                          return this.el;
                       }

                       else{
                          return this.el;
                       }
            }
        }

    .....

})(window, document);

我想要实现的是返回而不是this.el一个实例的Dome,所以我可以访问它的方法。我知道jquery做得很好,但我没有那么多经验,js接近于0原型。

1 个答案:

答案 0 :(得分:1)

听起来像是想要Factory

  function Dome(element){
    this.element = element;

    this.getElement = function(){
      return this.element;
    }
  }

  Dome.factory = function(selector){
      var el = getElement(selector);
      return new Dome(el);
  }

  var d = Dome.factory('test');
  alert(d.getElement());

+编辑+

既然你问过jQuery是如何做到的,我只是快速看一下......

所以主要的jQuery工厂($,jQuery)是;

jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
}

然后,jQuery.fn.init从jQuery.fn填充了它的原型。

因此,编辑我的原始答案以匹配此格式将是;

  function Dome(element){
    this.element = element;
  }

  Dome.core = {
    getElement: function(){
      return this.element;
    }
  };

  Dome.prototype = Dome.core;

  Dome.factory = function(selector){
      var el = getElement(selector);
      return new Dome(el);
  }

  var d = Dome.factory('test');
  alert(d.getElement());