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.当然,这有点隐私。是
调用。值未定义。你知道为什么吗因为它是私人的@JaredSmithcall[value]
仍将提供字符串Object.getOwnPropertySymbols(call)
仍将获取字符串。不是私人的。我必须同意这里的@JaredSmith。拥有适当的私人物品(在“无法从外部世界访问”的意义上)的唯一方法是使用作用域。@sp00m呃,本机模块可以让您到达那里,但这限制了您的客户。@JaredSmith Good old IILife FTW!