JavaScript "takeown"函数?

标签 javascript variables dom object

我想要一种快速简单的方法来“取得 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/

相关文章:

javascript - 自动点击两个按钮

variables - 如何从另一个函数访问结构变量?

javascript - 为什么这个 setAttribute 函数不起作用?

function - 在 Kotlin 中分配给变量的 Lambda 表达式。为什么?

jquery - 从部分 CSS 类名中获取变量值?

javascript - 如果我想使用 RequireJS,我真的需要更改我的 document.ready 部分吗?

javascript - 功能超出范围?

javascript - 具有绝对位置和较低 z-index 的 Div 显示在较高 z-index(固定位置)的顶部

javascript - 循环遍历 Javascript 中的函数

javascript - 使用 axios 发布和获取请求的不同 header ,创建?