重写javascript函数

重写javascript函数,javascript,jquery,arrays,json,javascript-objects,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)

我想用这种方式重写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;
      }
    }
  });
});
更新:已修复,有人对如何改进有什么建议吗


元素数组、元素窗口中的内容不是类的实例。它们只是物体。这意味着他们没有比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;
      }
    }
  });
});

尽管如此。。我觉得你的代码有点奇怪。为什么要覆盖默认窗口和元素原型

元素数组、元素窗口中的内容不是类的实例。它们只是物体。这意味着他们没有比a={}更多的原型;有一个原型。所以,如果我将:name:Element改为name:Element,那么一切都会好起来吗?如果我们不知道预期的用例,我们无法帮助改进它。你想做什么?这似乎有点不合常规。我在页面上有很多iframe,显示页面预览,我通过覆盖阻止iframe中的某些事件。