8

「Public」、「Private」、および「Protected」のキーワードは、JavaScript ではなく PHP または Java 用であると常に考えていましたが、これらが予約語であることがわかりました。

これらの特定の予約語を JavaScript で見たことも使用したこともありませんが、いつ使用するかを知りたいので、これらの特定の予約語をいつ、どのように使用するかの例を教えてください。

ありがとうございました

4

5 に答える 5

0

必要に応じて、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/

楽しんでくれると良いです。

于 2014-12-28T05:48:43.383 に答える
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--;
        }
    }
});
于 2013-12-11T06:48:05.097 に答える