如何创建可以全局访问但只能由某个函数修改的变量?
答案 0 :(得分:0)
现在使用ecma 6,您可以使用关键字const声明全局变量,并且不会修改这些变量。
const VARIABLE="wont be modified";
此外,每次创建函数时都会创建一个闭包。 闭包是一个内部函数,可以访问外部函数的变量,因此你可以创建一个函数并使用它的闭包
(function(global){
var a="I'm a";
function modifyA(newvalue){
a=newvalue;
}
function getA(){
return a;
}
global.modifyA=modifyA;
global.getA=getA;
})(window);
console.log(typeof a,"a doesn't exist in global environment");
console.log(getA(),"but exist in getA's closure");
modifyA('I have a new value');
console.log(getA(),"A can only be modify it with modifyA function");
答案 1 :(得分:0)
实现类似功能的一种方法是创建一个本地函数来设置值并创建一个新的'get'函数来返回值,如:
function createObjectGetter(obj)
{
this.getObject = function() { return obj; };
}
然后当你像createObjectGetter("abc")
一样调用它时,从那时起你可以获取像getObject()
这样的对象,当值保持不变时它将返回"abc"
并且只能通过{{1调整方法。
以下是参考资料:How can you make a variable/Object read only in Javascript?