我一直认为“Public”、“Private”和“Protected”关键字用于 PHP 或 Java,而不是 JavaScript,但我发现这些是保留字。
谁能给我一个如何或何时使用这些特定保留字的示例,因为我从未在 JavaScript 中看到或使用过它们,但想知道何时使用它们。
谢谢
我一直认为“Public”、“Private”和“Protected”关键字用于 PHP 或 Java,而不是 JavaScript,但我发现这些是保留字。
谁能给我一个如何或何时使用这些特定保留字的示例,因为我从未在 JavaScript 中看到或使用过它们,但想知道何时使用它们。
谢谢
ECMAScript 5 标准在7.6.1.2中每一个(不包括附件和版权声明)都只提到了“公共”、“私有”和“受保护”这些术语:
以下标记在出现在严格模式代码中时也被视为FutureReservedWords (参见 10.1.1)。
implements let private public yield interface package protected static
也就是说,它们当前不是该语言的特性,但这些标识符在严格模式下是不允许的,以便为它们未来的使用让路。
请注意,ES5 仅在严格模式下禁止这些词,但ECMSAcript 3 完全禁止它们:
7.5.3 未来保留字
以下词在提议的扩展中用作关键字,因此保留以允许将来采用这些扩展...
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--;
}
}
});
如果您愿意,可以使用 ZNOW。 http://icarusso.github.io/ZNOW/private.html
private、protected 和 public 是保留字。尽管 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。
另一个例子是单例。
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 还支持接口、抽象和常量。这是链接:http: //icarusso.github.io/ZNOW/
希望你喜欢它。