由於遞歸無限循環,首先不能發生下面的代碼。我想重寫數組上的推送函數。使用Coffeescript我希望能夠推入具有ID的對象,並確保它們在將它們添加到數組之前是唯一的。問題是,我無法找到我應該添加此對象的變量。覆蓋array.push Coffeescript
如何將對象添加到超級數組?
class SpecialArray extends Array
Array::push = (arg) ->
added = $.grep @, (item) ->
if item
item.id == arg.id
if added <= 0
@push.call(@,arg) // won't work due to loop
當我運行這段代碼,我得到的錯誤:
什麼循環?另外,你是否在尋找'added.length'? – Bergi
您[無法擴展'Array'](http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array)。 – Bergi
@Bergi我可以看到它是如何導致問題的。我能夠弄清楚,只是創建另一種方法,然後在最後調用push而不是重寫作品。我仍然想要Array的功能,我只需要添加額外的功能。 – Rizowski