Skip to content

数组是否响应

js
const myArray = Object.create(Array.prototype);

[("unshift", "push", "pop", "shift", "reverse", "splice", "sort")].map(
  (item) => {
    myArray[item] = function (value) {
      switch (item) {
        case "push":
        case "unshift":
          inserValue = value;
          break;
        case "splice":
          inserValue = value.slice(2);
          break;
      }
      console.log("inserValue", inserValue); // 新增值 响应

      if (inserValue) observeArray(inserValue);

      return Array.prototype[item].call(this, value);
    };
  }
);
js
if (Array.isArray(obj)) {
  obj.__proto__ = myArray; // 劫持对象原型
}

在 MIT 许可下发布