覆盖javascript函数

时间:2015-03-23 22:44:16

标签: javascript jquery arrays json javascript-objects

我想以这种方式覆盖js函数:

var elements = {
  "Element": {
    name: Element,
    events: ["focus","blur"]
  },
  "Window": {
    name: Window,
    events: ["scroll"]
  }
}

$.each(elements, function( k, v ) {
  $.each(v.events, function( i, val ) {
    if (val) {
      console.log(v.name.prototype[val]);

      v.name.prototype[val] = function () {
        return false;
      }
    }
  });
});

更新:已修复,是否有人建议如何让它变得更好?

demo

1 个答案:

答案 0 :(得分:0)

元素数组(Element,Window)中的内容不是类的实例。它们只是物体。这意味着他们没有原型,a = {};有原型。

如果您将这些字符串更改为指向类定义,那么您的代码应该可以正常工作。所以......

var elements = {
  "Element": {
    class: Element,
    events: ["focus","blur"]
  },
  "Window": {
    class: Window,
    events: ["scroll"]
  }
}

$.each(elements, function( k, v ) {
  $.each(v.events, function( i, val ) {
    if (val) {
      v.class.prototype[val] = function () {
        return false;
      }
    }
  });
});

所有这一切......你的代码对我来说似乎有点奇怪。您为什么要覆盖默认的WindowElement原型?