我一直认为“公共”,“私有”和“受保护”关键字用于PHP或Java,而不是JavaScript,但只是发现这些是保留字。
任何人都可以给我一个如何或何时使用这些特定保留字的例子,因为我从未在JavaScript中看到或使用它们,但想知道何时使用它们。
谢谢
答案 0 :(得分:9)
答案 1 :(得分:3)
答案 2 :(得分:2)
ECMAScript 5标准在7.6.1.2中仅提及“公共”,“私人”和“受保护”这两个术语(不包括附件和版权声明):
以下令牌在严格模式代码中出现时也被视为 FutureReservedWords (见10.1.1)。
implements let private public yield interface package protected static
也就是说,它们目前不具备该语言的功能,但这些标识符在严格模式下是不允许的,以供将来使用。
请注意,ES5仅在严格模式下禁止使用这些字词,但ECMSAcript 3 forbids them at all:
7.5.3未来保留字
以下词语在建议的扩展名中用作关键词,因此保留以供将来采用这些扩展名的可能性...
答案 3 :(得分:0)
https://github.com/nooning/JSClass/ 支持私有,受保护,公共,友好,静态的虚拟
Class(
{
Namespace:ABC,
Name:"ClassL3",
Bases:{"ClassL2":{Namespace:ABC,Policy:Class.Policy.Public}},
Private:{
Leg:2
},
Protected:{
TestProtected:0,
fight:function(){
console.log("ClassL3::fight "+this.constructor["."].Name);
this.Leg--;
}
}
});
答案 4 :(得分:0)
如果您愿意,可以使用ZNOW。 http://icarusso.github.io/ZNOW/private.html
私人,受保护和公共是保留字。虽然ECMASCRIPT 6是下一个JavaScript版本的支持类。似乎并非所有封装级别都受支持。此外,它的使用似乎有点冗长,并且在任何主流浏览器中都无法使用。 http://wiki.ecmascript.org/doku.php?id=harmony:classes我猜不同的封装级别可以提高代码的可读性和可维护性。特别是在开发复杂的程序和与其他程序员合作时。所以我设计了这个框架。 : - )
它使用名称前缀来声明不同的封装级别:_是私有的,$是受保护的。 例如:
var ClassA=Class({
init:function(a){ //constructor
this._a=a;
},
foo:function(){ //public function
return this._a;
},
_a:false //private attribute
})
var a=new ClassA('a');
console.log(a._a == 'a'); //false
console.log(a.foo() == 'a'); //true
这个框架允许您将您的oo技能从Java转移到JavaScript而不会感到痛苦。
另一个例子是Singleton。
var ClassA=Class({
'static.getInstance':function(){
if(!ClassA._instance) ClassA._instance=new ClassA();
return ClassA._instance;
},
'static._instance':false,
_init:function(){ //private constructor
console.log('instance created');
}
})
var a1=ClassA.getInstance(); //>instance created
var a2=ClassA.getInstance();
console.log(a1==a2); //>true
我希望您会发现这个框架易于使用且易于阅读。 ZNOW还支持接口,摘要和const。 您在此处链接:http://icarusso.github.io/ZNOW/
希望你喜欢它。