Javascript 配列のコンテンツが変更されたときにイベントを生成するにはどうすればよいですか。つまり、その特定の Javascript 配列に対してプッシュまたはポップ操作が実行されたときにイベントを生成する必要があります。基本的に、特定の Javascript 配列に対して実行されたプッシュ、ポップ操作を追跡したいと考えています。
編集:- コメントに記載されているソリューションでは、プッシュまたはポップ メソッドをオーバーライドする必要があります。オーバーライドせずに実行したい。
Javascript 配列のコンテンツが変更されたときにイベントを生成するにはどうすればよいですか。つまり、その特定の Javascript 配列に対してプッシュまたはポップ操作が実行されたときにイベントを生成する必要があります。基本的に、特定の Javascript 配列に対して実行されたプッシュ、ポップ操作を追跡したいと考えています。
編集:- コメントに記載されているソリューションでは、プッシュまたはポップ メソッドをオーバーライドする必要があります。オーバーライドせずに実行したい。
アイデアは、配列はオブジェクトであるため、プロパティを定義できるということです。
var someArray = []; // a normal array
someArray.push = function() { // this will override the original push method
// custom code here
console.log('pushing something..');
return Array.prototype.push.apply(this, arguments); // original push
};
// now everytime you push something a message will be logged. Change this functionality as you like.
注: someArray.push() が列挙可能になりました。これを防ぎたい場合は、Object.property メソッドを使用して「プッシュ」プロパティを定義できます。
Object.defineProperty(someArray, 'push', {
enumerable: false, // it's false by default anyway
value: function() {
console.log('pushing something..');
return Array.prototype.push.apply(this, arguments);
}
});