数组劫持

2019-10-31  本文已影响0人  zdxhxh

数组数据的观察

在javascript中,忌讳改变内置函数的相关属性,所以对数组的劫持,一般是对push、shift、pop、unshift等操作进行重写。

// 拷贝一个数组原型
var arrayProto = Array.prototype;
var arrayMethods = Object.create(arrayProto);
// 将arrayMethods对象上的push转换成观察者对象
Object.defineProperty(arrayMethods, "push", {
  value: function mutator() {
    // 缓存原生方法
    const original = arrayProto["push"];
    original.apply(this, Array.from(arguments));
    console.log("观察到数据变化", this);
  }
});

思路如下 :

上一篇 下一篇

猜你喜欢

热点阅读