我想以这种方式覆盖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;
}
}
});
});
更新:已修复,是否有人建议如何让它变得更好?
答案 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;
}
}
});
});
所有这一切......你的代码对我来说似乎有点奇怪。您为什么要覆盖默认的Window
和Element
原型?