【问题标题】:Generating event on Javascript array在 Javascript 数组上生成事件
【发布时间】:2015-07-31 08:01:41
【问题描述】:

如何在修改 Javascript 数组的内容时生成事件,即在对该特定 Javascript 数组执行推送或弹出操作时应生成事件。基本上,我想跟踪对特定 Javascript 数组执行的推送、弹出操作。

编辑:- cmets 中所述的解决方案需要覆盖 push 或 pop 方法。我想在不覆盖它的情况下执行它。

【问题讨论】:

标签: javascript arrays dom-events custom-events


【解决方案1】:

这个想法是数组是对象,所以你可以定义属性。

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);
   }
});

【讨论】:

  • 将尝试第二种方法。看起来很有趣。
【解决方案2】:

我认为没有本地方法可以做到这一点。 here 也讨论了这个主题,建议的解决方案是为您的数组实现一个包装类。

另一种方法是仅实现包装器push 函数并在函数调用时触发事件。

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2018-05-27
    • 1970-01-01
    相关资源
    最近更新 更多