ミニマリスト アプローチ オランダのプログラマー、Gabor de Mooij は、Object.create() よりも優れた新しいメソッドを提案し、このメソッドを「ミニマリスト アプローチ」と呼びました。これも私がオススメする方法です。
3. 1 カプセル化
このメソッドは this やプロトタイプを使用せず、コードが非常に簡単にデプロイできるため、おそらく「ミニマリストメソッド」と呼ばれます。
まず第一に、これも「クラス」をシミュレートするためにオブジェクトを使用します。このクラスでは、インスタンスを生成するためのコンストラクター createNew() を定義します。
var Cat = {
createNew: function () {
// some code here
}
};
次に、createNew() でインスタンス オブジェクトを定義し、このインスタンス オブジェクトを戻り値として使用します。
var Cat = {
createNew: function () {
var cat = {};
cat.name = "大马";
cat.makeSound = function (){ アラート ("ニャーニャー") }; cat;
}
};
使用する場合は、createNew() メソッドを呼び出してインスタンス オブジェクトを取得します。
var cat1 = Cat.createNew ();
cat1.makeSound (); // ニャーニャーニャー
このメソッドの利点は、理解しやすく、明確でエレガントな構造を持ち、従来の「オブジェクト」に準拠していることです。 「指向プログラミング」構造を採用しているため、簡単に導入できます。
3. 2 継承
あるクラスに別のクラスを継承させるととても便利です。前者の createNew () メソッド内で後者の createNew () メソッドを呼び出すだけです。 まず、Animal クラスを定義します。
var Animal = {
createNew: function () {
var 動物 = {};
animal.sleep = function (){ アラート
}
}; 🎜>
次に、Cat の createNew () メソッドで、Animal の createNew () メソッドを呼び出します。
createNew: function () {
var cat = Animal.createNew ();
cat.name = "大毛";
cat.makeSound = function (){ アラート ("ニャーニャー"); >return cat;
}
};
このようにして取得した Cat インスタンスは、Cat クラスと Animal クラスの両方を継承します。
コードをコピー
3. 3 プライベートプロパティとプライベートメソッド
内で、 cat オブジェクトでは定義されていません。メソッドとプロパティはプライベートです。
コードをコピー
var cat = {};
var sound = "ニャーニャー";
cat.makeSound = function (){ アラート (サウンド) }; >}
};
上記の例の内部変数 sound は外部から読み取ることができず、cat の public メソッド makeSound () を通じてのみ読み取ることができます。
コードをコピー
3. 4 データ共有
場合によっては、すべてのインスタンス オブジェクトが読み書きできるようにする必要があります。同じ内部データです。このとき、クラスオブジェクト内および createNew() メソッドの外に内部データをカプセル化するだけです。
コードをコピー
コードは次のとおりです:
var Cat = {
sound : "ニャーニャー",
createNew: function (){
var cat = {};
cat.makeSound = function (){ (Cat.sound) };
cat.changeSound = function (x){
}; 🎜> 次に、2 つのインスタンス オブジェクトを生成します:
コードをコピーします
コードは次のとおりです: var cat1 = Cat.createNew (); var cat2 = Cat.createNew ();
cat1.makeSound (); // このとき、インスタンス オブジェクトがある場合、共有データが変更されると、別のインスタンス オブジェクトも影響を受けます。
コードをコピーします
コードは次のとおりです。