第五章継承

1619 ワード

JSでは可能な継承パターンがたくさんあります.この章では、いくつかの最も直接的なパターンを研究します.もちろん、もっと複雑な構造パターンがたくさんありますが、シンプルさを保つのが一番いいです.
1.ダミークラス
var Mammal = function (name){
    this.name = name;
}

Mammal.prototype.getName = function (){
    return this.name;
};

Mammal.prototype.says = function (){
    return this.saying || '';
};

var myMammal = new Mammal('hello the mammal');

var name = myMammal.getName();
現在、もう一つの疑似クラスを構築して、Mammalを継承することができます.これは彼のconstructor関数を定義し、そのprototypeをMammalの例に置き換えることによって実現されます.
var Cat = function(name){
    this.name = name;
    this.saying = 'meow';
}
//Cat.prototypeを置き換えると新しいMammalの例になります.
Cat.prototype = new Mammal();
//新プロトタイプを拡充し、Purとget_を増やすnameメソッド
Cat.prototype.purr = function(n) {
    var i, s = '';
    for( i = 0; i < n; i ++ ){
        if(s){
            s += '-'
        }
        s += 'r';
    }
    return s;
}

Cat.prototype.getName = function(){
    return this.says() + ' ' + this.name + ' ' + this.says();
}

var myCar = new Cat('Henrietta');
var says = myCar.says();
var purr = myCar.purr(5);
var name = myCar.getName();
"疑似クラス"の形式は、jsに慣れていないプログラマーに便利を提供することができますが、それはまた、言語の本当の本質を隠しています.参考類の表示法はプログラマーを誤って書きすぎて複雑な階層構造になるかもしれない.
2オブジェクト説明子
構造期には大きなパラメータが必要な場合があります.
私自身は深く体得しています.前に書いた関数で受けたパラメータが多いので、他の人が呼びにくいです.
だから、一番いい方法は:
var parame = {
    first: f,
    middle: m,
    last: l,
    state: s,
    city: c
}

var myObject = maker(parame);
  • プロトタイプ
  • 原型による継承
  • 関数化