0

コードで関数の作成を削除したいのですが、方法がわかりません。ここで誰でも私を助けることができますか?

    for (var eventName in this.events) {
        var eventFunc = this.events[eventName],
            splitEventName = eventName.split(" "),
            eventType = splitEventName[0],
            eventUI = splitEventName[1];

        Utilities.addEventListener(this.ui[eventUI], eventType, (function(view, eventFunc) {
            return function(e) {
                eventFunc.call(view, e);
            };
        }(this, eventFunc)));
    }
4

1 に答える 1

3

すぐに呼び出される関数式をループの外に移動して、通常の関数宣言に変えることができます。次に、反復ごとに単純に呼び出すことができます。

function makeEventListener(view, eventFunc) {
    return function (e) {
        eventFunc.call(view, e);
    };
}
for (var eventName in this.events) {
    var eventFunc = this.events[eventName],
        splitEventName = eventName.split(" "), 
        eventType = splitEventName[0],
        eventUI = splitEventName[1];
    Utilities.addEventListener(this.ui[eventUI], eventType, makeEventListener(this, eventFunc));
}
于 2012-11-22T13:24:19.763 に答える