创建可以在全球访问但无法在开发人员控制台中修改的变量



如何创建可以在全球访问但只能通过某个函数修改的变量?

现在使用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中读取变量/对象?

最新更新