オブジェクトの継承
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