如何创建可以在全球访问但只能通过某个函数修改的变量?
现在使用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");
完成类似事物的一种方法是创建一个可以设置值并创建新'get'函数的本地函数,以返回值:
function createObjectGetter(obj)
{
this.getObject = function() { return obj; };
}
然后,当您像createObjectGetter("abc")
一样称呼它时,从那时起,您可以在该值返回 "abc"
时取得 CC_3,而该值将保持恒定,并且仅通过createObjectGetter()
方法调节。
这是参考:如何仅在JavaScript中读取变量/对象?