【JavaScript】オブジェクトの継承

  • このエントリーをはてなブックマークに追加

オブジェクトの継承



JavaScript The Good Partsに載っていたオブジェクトの継承では、関数オブジェクトを直接継承して関数オブジェクトを作る。
cat関数を継承してcoolcat関数を作る。メソッドを追加することができる。
次のようなことが可能である。


var mammal = function(spec) {
  var that = {};

  that.get_name = function() {
    return spec.name;
  };

  that.says = function() {
    return spec.saying || '';
  };

  return that;
};

var myMammal = mammal({
  name: 'Herb'
});

var cat = function(spec) {
  spec.saying = spec.saying || 'meow';
  var that = mammal(spec);
  that.get_name = function() {
    return that.says() + ' ' + spec.name + ' ' + that.says();
  };
  return that;
};

var myCat = cat({
  name: 'Henrietta'
});

var coolcat = function(spec) {
  var that = cat(spec);

  that.get_name = function(n) {
    return 'good morning';
  };

  that.get_name2 = function(n) {
    return 'hello';
  };

  return that;
};

var testCat = coolcat({
  name: 'Bix'
});

console.log(testCat.get_name()); // good morning
console.log(testCat.get_name2()); // hello

console.log(myCat.get_name()); // meow Henrietta meow
console.log(myCat.get_name2()); // Uncaught TypeError: myCat.get_name2 is not a function
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*