2016-06-29 11 views
0

配列のpushをオーバーライドしようとしています。私はオーバーライドする前に元のpushメソッドを呼び出すことができる必要がありますので、配列に要素をプッシュできます。配列のオーバーライド時に元のメソッドを呼び出す

以下は私のコードです。 valueメソッド内にlist.pushを追加しました。私はこれが間違っていることを知っていますが、私が何をしようとしているのかを示すために追加しました。

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

それは、プロトタイプや – ftor

+0

インスタンス化されたオブジェクトの両方で、ネイティブメソッドを上書きするために悪い考えです、それは、理由はあなたが説明してもらえます悪いアイデアとは何ですか?ここで完成したコードは次のとおりです:http://codepen.io/JamesTheHacker/pen/dXvdBb 要素を配列にプッシュした後、別のメソッドを呼び出すためにpushを使いたいので、pushをオーバーライドすることにしました。私。アイテムが押されたときにイベントを発生させます。 あなたがこれを行うための「より良い」方法である、より良い、代替的なアプローチを持っているなら、それを聞いて欲しいです。ありがとう。 – BugHunterUK

+1

@ LUH3417は自由に回答できます:http://stackoverflow.com/questions/38098876/why-is-it-a-bad-ide-to-override-native-methods – BugHunterUK

答えて

3

は、コンテキストとして、あなたの現在のオブジェクトとオリジナルのプロトタイプ実装を呼び出します

Array.prototype.push.call(this, el) 
関連する問題