2

このコードには関数式が多すぎるため、単純化したいのですが、方法がわかりません。

(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/

4

1 に答える 1

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.prototypeElement.prototypeください。

于 2012-03-09T21:54:36.100 に答える