2014-06-23 147 views
1

我的JavaScript對象是:對象覆蓋工作不

var MyObject = { 
    DOM: function(tagName){ 
     if(!this.isElement){ 
      var found = document.getElementsByTagName(tagName); 
      this.isElement = true; 
      for(i in found) 
       this[i] = found[i]; 
     } else{ 
      var found = this[0].getElementsByTagName(tagName); 
      for(i in found) 
       this[i] = found[i]; 
     } 
     return this; 
    } 
} 

它完美:

MyObject.DOM("div"); 

的問題是,當我再次登錄對象:

MyObject.DOM("div"); 
console.log(MyObject); 

問題是它的日誌:

>對象{0:DIV#lower.cl,1:div.higher,發現:功能,isElement:真正}

但實際上我希望它登錄:

>對象{find:function}

所以我不想讓它在我再次運行MyObject時保留找到的元素。

所以真的我只是想重新加載對象,每次使用它。

+1

你說的不對應於您發佈的代碼的行爲。 – gustavodidomenico

+0

在對象代碼中'DOM'應該是'find'嗎? –

+0

@PaulRoub編輯 – user3719477

回答

1

這裏有一種方法可以實現這一點。如果你堅持讓你的對象儘可能不變,那麼最好。你試圖使用一個對象的一個​​實例做的一切,這是行不通的:

function MyObject() { 
    this.length = 0; 
} 

MyObject.prototype.DOM = function (tagName) { 
    var found = new MyObject(), 
     batch, 
     toSearch, 
     i, 
     j, 
     z = 0; 

    if (this === MyObject) { 
     toSearch = [document]; 
    } else { 
     toSearch = Array.prototype.slice.call(this); 
    } 

    for (i = 0; i < toSearch.length; i += 1) { 
     batch = toSearch[i].getElementsByTagName(tagName); 
     for (j = 0; j < batch.length; j += 1) { 
      found[found.length] = batch[j]; 
      found.length += 1; 
     } 
    } 

    return found; 
} 

MyObject.DOM = MyObject.prototype.DOM; 

http://jsfiddle.net/Sygdm/

0

您可以添加排序「私人」領域到類像這樣:

var MyObject = (function() { 
    var instance = {}; 
    return { 
    DOM: function(tagName){ 
     if(!instance.isElement){ 
      var found = document.getElementsByTagName(tagName); 
      instance.isElement = true; 
      for(i in found) 
       instance[i] = found[i]; 
     } else{ 
      var found = instance[0].getElementsByTagName(tagName); 
      for(i in found) 
       instance[i] = found[i]; 
     } 
     return this; 
    } 
    } 
})(); 

不知道這是你想要的,雖然。

+0

它的工作原理,但我想要的對象是可鏈接的。 – user3719477

+0

只是返回這個結束,而不是實例:) –

+0

你是什麼意思? – user3719477