「Public」、「Private」、および「Protected」のキーワードは、JavaScript ではなく PHP または Java 用であると常に考えていましたが、これらが予約語であることがわかりました。
これらの特定の予約語を JavaScript で見たことも使用したこともありませんが、いつ使用するかを知りたいので、これらの特定の予約語をいつ、どのように使用するかの例を教えてください。
ありがとうございました
「Public」、「Private」、および「Protected」のキーワードは、JavaScript ではなく PHP または Java 用であると常に考えていましたが、これらが予約語であることがわかりました。
これらの特定の予約語を JavaScript で見たことも使用したこともありませんが、いつ使用するかを知りたいので、これらの特定の予約語をいつ、どのように使用するかの例を教えてください。
ありがとうございました
必要に応じて、ZNOW を使用することもできます。 http://icarusso.github.io/ZNOW/private.html
private、protected、public は予約語です。次の JavaScript バージョンである ECMASCRIPT 6 ではクラスがサポートされていますが、すべてのカプセル化レベルがサポートされているわけではないようです。さらに、その使用は少し冗長に見え、主要なブラウザーではまだ利用できません。 http://wiki.ecmascript.org/doku.php?id=harmony:クラス
さまざまなカプセル化レベルにより、コードの可読性と保守性が向上すると思います。特に複雑なプログラムを開発したり、他のプログラマーと協力したりする場合。だから私はこのフレームワークを設計しました。:-)
名前のプレフィックスを使用して、さまざまなカプセル化レベルを宣言します。_ はプライベートで、$ は保護されています。例:
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 は、インターフェイス、抽象、および const もサポートしています。ここにリンクがあります:http://icarusso.github.io/ZNOW/
楽しんでくれると良いです。
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--;
}
}
});