这段代码有太多的函数表达式,我想简化它,但我不知道如何。
(function(a, b) {
for (a in b = a.prototype)(function(c) {
b[a] = function() {
c.apply(this, arguments);
return this
}
})(b[a])
})(Element);
答案 0 :(得分:3)
虽然使用函数语法的次数相同,但您可以减少通过从循环中删除IIFE而创建的函数数量,并使其成为命名函数...
(function(type) {
var proto = type.prototype,
fn;
function createChainable(proto_func) {
return function() {
proto_func.apply(this, arguments);
return this;
};
}
for (fn in proto)
proto[fn] = createChainable(proto[fn]);
})(Element);
我也摆脱了那种手工混淆。不需要它。
外部IIFE只是为了防止全局变量。你可以摆脱它,但最终你会陷入全球污染。
如果这不打扰你,请删除第一行和最后一行,并将type.prototype
替换为Element.prototype
。