JavaScript "takeown" function?
JavaScript "takeown" function?
我想要一种快速简单的方法来"获得"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是不可写的,我认为任何其他全局变量都是可写的。
干杯
相关文章:
- 直接在函数声明上使用function.prototype.bind
- jQuery:.click(function(){(element),collapse('show',f
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- 如何在“;beforeSend:function()"使用ajax和jquery
- 重复“;function(){}.调用(this)"在Uglified JS中
- KnockoutJS:无法处理绑定"if:function(){return conversations}”;
- "Function.createDelegate"原因;错误:对象没有't支持属性或方法
- Asp .NET Button - OnClientClick="return function()"
- JavaScript/jQuery - "$ is not defined- $function()"
- 什么是“;变量:function(){}"方法
- 为什么是全球性的"this.function";如果没有";这个"