如何减少函数表达式的数量?

时间:2012-03-09 21:42:00

标签: javascript function declaration simplify

这段代码有太多的函数表达式,我想简化它,但我不知道如何。

(function(a, b) {
    for (a in b = a.prototype)(function(c) {
        b[a] = function() {
            c.apply(this, arguments);
            return this
        }
    })(b[a])
})(Element);

http://jsfiddle.net/aap7y/

1 个答案:

答案 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