如何摆脱这个函数中的“with()”?

时间:2012-03-09 20:21:59

标签: javascript with-statement

由于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 个答案:

答案 0 :(得分:8)

使用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);​