アクセス制限・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(); //アクセスできない
Douglas Crockford
オライリージャパン
売り上げランキング: 5275
オライリージャパン
売り上げランキング: 5275

0 件のコメント:
コメントを投稿