gpt4 book ai didi

javascript - 为什么不推荐 `with`?有没有更好或其他方法将 "descend"放入对象的 namespace ?

转载 作者:行者123 更新时间:2023-11-28 13:48:32 26 4
gpt4 key购买 nike

来自MDN :

Using with is not recommended, and is forbidden in ECMAScript 5 strict mode. The recommended alternative is to assign the object whose properties you want to access to a temporary variable.

这似乎是一个很棒/有用/方便的功能。为什么会被人皱眉呢?还有哪些其他方法可以达到这种效果?我不想去:

veryLongNS.y = veryLongNS.myFunc(veryLongNS.x);
veryLongNS.z = 6;
veryLongNS.otherFunc();
veryLongNS.a = {
a:1,
b:2,
c:veryLongNS.processThree(3)
};

最佳答案

这是一个相关的答案: Are there legitimate uses for JavaScript's "with" statement?

另外:http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/

以下作为替代方案怎么样?

(function(obj) {
obj.y = obj.myFunc(obj.x);
obj.z = 6;
obj.otherFunc();
obj.a = {a:1,b:2,c:obj.processThree(3)};
})(myAwkwardlyNamedObjectToBeUsedAsANameSpaceThatIWishToModifyAndNotJustRead);

编辑:为了清楚起见和后代,这也是可能的(并且在大多数情况下比上面的更受欢迎 - 我不会建议在全局范围,但我不建议在全局范围内执行任何操作):

function someFunction() {
// in some function
var obj = myAwkwardlyNamedObjectToBeUsedAsANameSpaceThatIWishToModifyAndNotJustRead;
obj.y = obj.myFunc(obj.x);
obj.z = 6;
obj.otherFunc();
obj.a = {a:1,b:2,c:obj.processThree(3)};
// ... any other stuff in the function
}

关于javascript - 为什么不推荐 `with`?有没有更好或其他方法将 "descend"放入对象的 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12381301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com