我想要一种快速简单的方法来“取得 JavaScript 变量的所有权”。例如:
function takeown( obj ) {
obj = obj;
}
takeown( window.undefined );
那么这会将 window.undefine
设置为 window.undefined
吗?
很抱歉提出了 n00b 问题,但是,我是 javascript 方面的 n00b。
最佳答案
这不会有任何作用。 JavaScript 变量是对内存中对象的引用。您的函数接受一个引用并将其指向之前引用的同一对象,使其(如注释中所述)成为无操作。
如果你想重新定义window.undefined,你可以通过将其设置为新值来完成(不建议这样做)。 JavaScript 不会以您期望的方式保护其全局变量。大多数内置值都可以重新定义或增强。
更新
既然您在评论中明确表示您真正想要的是一种防止变量将来被修改的方法,那么最好的方法就是使用闭包。
闭包是一种利用 JavaScript 处理作用域来模拟私有(private)变量和保护作用域的方法。具体来说,在这种情况下,您可以执行以下操作:
function createConstant(){
var const = 3;
return function(){
return const;
}
}
这将创建一个不可变地返回 3 的函数。所以:
createConstant()
将始终返回 3。(尽管从技术上讲,您可以重新定义 create 常量来引用新函数。在某种程度上,我们对此无能为力。
关于JavaScript "takeown"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14533044/