Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将命名空间变量设置为";“私人”;_Javascript_Jquery - Fatal编程技术网

Javascript 将命名空间变量设置为";“私人”;

Javascript 将命名空间变量设置为";“私人”;,javascript,jquery,Javascript,Jquery,我正在创建一个名称空间,想知道如何限制名称空间变量的可访问性,以便只能从名称空间内部访问它 var demo = { a: "demo", b: { PrivateExec: function () { //execute }, ExecA: function () { PrivateExec(); }, ExecB: function () {

我正在创建一个名称空间,想知道如何限制名称空间变量的可访问性,以便只能从名称空间内部访问它

var demo = {
    a: "demo",
    b: {
        PrivateExec: function () {
            //execute
        },
        ExecA: function () {
            PrivateExec();
        },
        ExecB: function () {
            PrivateExec();
        }
    }
}

demo.ExecA(); //success
demo.PrivateExec(); //fails because of private
在我的示例代码中,我希望PrivateExecprivate
private
,并且在名称空间之外不可访问

var demo = {
    a: "demo",
    b: {
        PrivateExec: function () {
            //execute
        },
        ExecA: function () {
            PrivateExec();
        },
        ExecB: function () {
            PrivateExec();
        }
    }
}

demo.ExecA(); //success
demo.PrivateExec(); //fails because of private

尽量不要使用此代码:您的变量应该是私有的

var value = Symbol();
class MyClass {
    constructor(){
        this[value] = "this is a test string";
    }
}

var call = new MyClass();

console.log(call.value); // should be undefined

我强烈建议阅读ES6之前的“学习JavaScript设计模式”(Learning JavaScript Design Patterns)(),可能与之重复。有关私有方法的示例,请参见“模块”模式。为什么它必须是私有的?根据您的操作方式,不会发生。1。-2.当然,这有点隐私。是
调用。值
未定义。你知道为什么吗因为它是私人的@JaredSmith
call[value]
仍将提供字符串
Object.getOwnPropertySymbols(call)
仍将获取字符串。不是私人的。我必须同意这里的@JaredSmith。拥有适当的私人物品(在“无法从外部世界访问”的意义上)的唯一方法是使用作用域。@sp00m呃,本机模块可以让您到达那里,但这限制了您的客户。@JaredSmith Good old IILife FTW!