Function.applyを使って、クラスをMix-in

Firebugのコードを読んでから、apply廚になりはじめている。

var Foo = function() {
  this.name = "Foo";
  this.foo = "foo";
  this.hage ="foo";
}
var Bar = function() {
  this.name = "Bar";
  this.bar = "bar";
  this.hage = "bar";
}
var Hoge = function() {
  this.name ="Hoge";
}
new Hoge(); // Object name="Hoge"

Foo.apply(Hoge.prototype);

new Hoge(); // Object name="Hoge" foo="foo" hage="foo"

Bar.apply(Hoge.prototype);

new Hoge(); // Object name="Hoge" foo="foo" hage="bar" bar="bar"

逆にMix-inさせたくなければ、クラス定義を

var Foo = function(){}
Foo.prototype.name = "Foo";

という感じで、空Function+prototypeでやればOK。


applyちょう便利!