JavaScript "takeown" function?

JavaScript "takeown" function?

本文关键字:quot function takeown JavaScript      更新时间:2023-09-26

我想要一种快速简单的方法来"获得"JavaScript变量的所有权。例如:

function takeown( obj ) {
     obj = obj;
}
takeown( window.undefined );

那么这是否window.undefined window.undefined

很抱歉 n00b 问题,但是,我是 javascript 的 n00b。

这将无济于事。 Javascript 变量是对内存中对象的引用。 您的函数接受一个引用并将其指向它之前引用的同一对象,使其(如注释中所述)成为无操作。

如果要重新定义 window.undefined,可以通过将其设置为新值来完成(不建议这样做)。 Javascript 不会以您期望的方式保护其全局变量。 大多数内置值都可以重新定义或增强。

更新

由于您在评论中明确表示,您真正想要的是一种防止将来修改变量的方法,因此最好的方法是使用闭包。

闭包是一种利用 javascript 对作用域的处理来模拟私有变量和保护作用域的方法。 具体在这种情况下,您可以执行以下操作:

function createConstant(){
     var const = 3;
     return function(){
         return const;
     }
}

这将创建一个不可变返回 3 的函数。所以:

createConstant()

将始终返回 3。 (尽管从技术上讲,您可以重新定义创建常量以引用新函数。 在某种程度上,对这个东西无能为力。

您要做的是覆盖全局变量(我不明白您为什么要这样做),这是这样完成的:

window.Counter = 'whatever';
// so
window.Counter // => 'whatever'

您的函数将一个变量分配给同一个变量...无操作。但是,自javascript 1.8.5(链接)以来,undefined是不可写的,我认为任何其他全局变量都是可写的。

干杯