在实际询问任何事情之前,我会继续说这是一个理论问题;但是,稍后可能会在网站上实施。在本地范围内暂时替换全局变量
无论如何,我有一个变量,任何变量。假设它是a
,它的范围是全局的。现在,对于一个特定的函数,我想将该变量的值设置为全局值以外的值,但是基于此值,并且没有全局更改其值。例如:
a = {something: "Safe", other: "Foo"}
function hello(){
var a = a.other; // Foo
a.something; // Undefined
}
a.something; // Safe
a.other; // Foo
与上面的代码的问题是,当我在函数定义var a
,将已经在本地设置之前,清除了全球a
的价值;换句话说,它会返回类似Can't access property [other] of undefined [a]
。
同样,a
仍然应该是a
(所以使用另一个变量名称是不是一个选项,或至少不是理想的)。实际上,全球a
不应该可从功能hello
访问。
编辑:window
也将被覆盖与null
,关于米兰Jaric的答案。
在此先感谢!
这不是我理解你在原始问题中提出的问题。你正在做的是传递一个对被赋予'a.other'的对象的引用,你问如何阻止访问全局* a *,但仍然引用它的属性。 – RobG
@RobG:当你看这个代码和单独的代码时,它几乎是一样的。我只需要访问*一个*属性,然后在那里访问它;另外,可以防止访问其他'a'属性/方法。此外,真的没有别的办法。事情不是不可能的*。 – JCOC611
尽管发现由* ab *引用的对象实际上是由* ab *引用的,所以对其他* a *属性的访问完全不被阻止,需要几次猜测,并且考虑到一些假设(即, ,默默无闻的安全不是一个合理的政策)。 – RobG