jsリスニング配列の変化
4288 ワード
jsリスニング配列の変化最近車輪を作る時にこのような問題に遭遇しました.それは配列が内部メソッドを呼び出す時にどのように配列が変化したことを傍受することができますか.例えば、1つの配列がpushメソッドを呼び出したと仮定して、配列がpushメソッドを呼び出したことを知ったら、どのように傍受しますか. 配列内部を直接呼び出す方法であれば、配列の変動は傍受されないため、以下のように改造することができる. 配列の変動を傍受できるかどうか試してみましょう:
// Array ,
const arrayMethods = Object.create(Array.prototype)
// ,
const ArrayProto = []
// Array
Object.getOwnPropertyNames(Array.prototype).forEach(method => {
if(typeof arrayMethods[method] === "function"){
ArrayProto[method] = function(){
console.log(" "+method+" ")
return arrayMethods[method].apply(this, arguments)
}
}else{
ArrayProto[method] = arrayMethods[method]
}
})
let list = [1, 2, 3]
//
list.__proto__ = ArrayProto
// push
list.push(2)
// :
push //