更改 JavaScript 范围

发布于 2024-11-03 14:51:34 字数 283 浏览 3 评论 0原文

是否有可能通过自定义范围来交换特殊的全局 window 范围?我只是认为 with 是有意义的,但它只堆叠另一个“查找”范围。例如。

test={};
with(test){
    a=1;
}

不会创建属性 test.a,而是创建 window.a

那么 window 对象具有 JS 特定的特殊品质,我无法使用自己的代码重新创建?

Is there any posibility to exchange the special global window scope by a custom one? I just thought with is meant to, but it only stacks another "lookup" scope. Eg.

test={};
with(test){
    a=1;
}

does not create the property test.a but window.a.

So the window object has a JS-specific special quality I cannot recreate with own code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜灵血窟げ 2024-11-10 14:51:34

如果该属性存在于给定 with 的对象上,那么它将被修改,但永远不会被创建。这是使用 with 的一个主要“陷阱”,也是应该避免的主要原因。

If the property exists on the object given to with then it will be modified, but it will never be created. This is a major "gotcha" with using with and the primary reason it should be avoided.

无名指的心愿 2024-11-10 14:51:34

使用 with 仅当传入的对象具有该属性时,才会对其进行修改。它不会被创建。

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

With with only if the object passed in has that property, will it be modified. It will not be created.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文