重写javascript函数
我想用这种方式重写js函数:重写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)
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中的某些事件。