как мне избавиться от "with ()" в этой функции? - PullRequest
2 голосов
/ 10 марта 2012

, поскольку функция with() устарела, я хочу избавиться от нее в своем коде.

Как я могу сделать это в этой конкретной функции?

Оригинальный код:

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

Форматированный код для справки:

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

1 Ответ

8 голосов
/ 10 марта 2012

Причина использования with заключается в закрытии значения b[a] внутри функции, правильная замена с закрытием:

(function(a, b) {
    for (a in b = a.prototype)
        (function (d) { //this line used to be: with({ d:b[a] })
            b[a] = function(c) {
                d.apply(this, arguments);
                return this
            }
        }(b[a])); //this is where `d` is set
})(Element);​
...