JavaScript 規約③

アクセス制限・protected

オブジェクト内で宣言された変数は子クラスでもアクセスできない(private)。
thatに格納されたメソッドなどはどこからでもアクセスできる(public)。
外からはアクセスされたくないが、継承先でつかいたいメソッドを定義できる(protected)。格納するハッシュオブジェクトの名前はmyとする。


    var Animal = function (name, my) {  //親クラス
        my = my || {};  //myを設定。なければハッシュを代入
        var _name = name, that = {};

        //myにgetNameメソッドを格納する
        my.getName = function () {  //protectedなメソッド
            return _name;
        };
        that.say = function () {
            return "Hello! My name is ";
        };
        return that;
    };

    var Cat = function (name, my) {  //子クラス。Cat
        my = my || {};
        var that = Animal(name, my);
        var superSay = that.superior('say');
        that.say = function () {
           return superSay() + my.getName() + "! Meow!!";
       };
       return that;
    };

    var Dog = function (name, my) {  //子クラス。Dog
        my = my || {};
        var that = Animal(name, my);
        var superSay = that.superior('say');
        that.say = function () {
            return superSay() + my.getName() + "! Vow wow!!";
        };
        return that;
    };

    var cat = Cat("Liz");
    var dog = Dog("Tom");
    var cat_word = cat.say();   //cat_word => "Hello! My name is Liz! Meow!!"
    var dog_word = dog.say(); //dog_word => "Hello! My name is Tom! Vow wow!!"
    dog.getName();                  //アクセスできない


JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Douglas Crockford
オライリージャパン
売り上げランキング: 5275

0 件のコメント:

コメントを投稿