2016-06-29 11 views
0

Ich versuche, push auf einem Array zu überschreiben. Ich muss in der Lage sein, die ursprüngliche push Methode vor dem Überschreiben aufzurufen, damit ich das Element auf das Array schieben kann.Aufruf der ursprünglichen Methode beim Überschreiben von Array-Push

Unten ist mein Code. Ich habe list.push innerhalb der value Methode hinzugefügt. Ich weiß, das ist falsch, aber ich habe es hinzugefügt, um zu zeigen, was ich versuche zu tun.

let list = [ 
    'One', 
    'Two', 
    'Three' 
] 

Object.defineProperty(list, 'push', { 
    value: function(el) { 
    list.push(el) // I know this is wrong. Example of what I am trying to do. 
    } 
}) 
+0

Es ist eine schlechte Idee, eine native Methode, die beide an einem Prototyp oder auf instanziiert Objekte zu überschreiben – ftor

+0

Könnten Sie bitte erklären, warum es eine schlechte Idee und was ist die Alternative? Hier ist der fertige Code: http://codepen.io/JamesTheHacker/pen/dXvdBb Ich entschied mich, 'push' zu überschreiben, denn nachdem ein Element zu einem Array geschoben wurde, wollte ich' push', um eine andere Methode aufzurufen. I.e. Feuern Sie ein Ereignis ab, wenn ein Gegenstand geschoben wird. Wenn Sie einen besseren, alternativen Ansatz haben, der ein "besserer" Weg ist, würde ich das gerne hören. Vielen Dank. – BugHunterUK

+1

@ LUH3417 zögern Sie nicht zu beantworten: http://StackOverflow.com/Questions/38098876/Why-ISit-Abad-idea-to-Override-Native-Methods – BugHunterUK

Antwort

3

Rufen Sie die ursprüngliche Prototyp-Implementierung mit Ihrem aktuellen Objekt als Kontext:

Array.prototype.push.call(this, el) 
Verwandte Themen