gpt4 book ai didi

javascript - 创建一个独立于其他 javascript 的私有(private)命名空间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:24 26 4
gpt4 key购买 nike

我正在创建一个可以在各种网站上使用的脚本。由于我不知道它的使用情况,我希望能够将它放在某种沙箱中,它不会影响页面上的其他 javascript,反过来也不会受到其他 javascript 的影响。

最基本的开始是使用自调用函数:

(function(){
x = function(){ alert('hi!');
x();
})();

但我的问题是,如果 x 已经被赋值,你不能覆盖它:

x = function(){ alert('too late!');
(function(){
x = function(){ alert('hi!');
x();
})();

这会提醒“太晚了!”而不是“嗨!”,这不是我想要的效果。谁能帮忙?

最佳答案

不要忘记使用 var 语句,如果不使用它,变量将在全局范围内声明。不过,您走在正确的轨道上,在立即执行的函数中创建自己的范围。例如:

var x = function() { alert('foo') };
(function() {
var x = function() { alert('bar') }
x() // 'bar'
}());
x() // 'foo'

回到你的例子:

x = function(){ alert('too late!')};
(function(){
x = function(){ alert('hi!')};
x(); // 'hi'
})();
x(); // 'hi'

这将警告 'hi' 两次,因为如果没有 var 语句,您将在两个范围内使用相同的 x 值。如果您要在自执行函数内使用 var 语句,则 x 的第二次调用会发出“太晚了!”的警报。

关于javascript - 创建一个独立于其他 javascript 的私有(private)命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066395/

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