SIEの継承の仕組みについて

JavaScriptの継承

SIEについて、JavaScriptの継承の仕組みを考え直しました。

SIEの今までのやり方

基本的に、SIEのインタフェースを実装する際には、次のような形で実装していました。

 function Foo() { //SuperClass
   alert("");
 };
 function FooFoo() { //SubClass
   Foo.apply(this);
 };

 FooFoo.prototype = new Foo();
 FooFoo.constructor = Foo;

しかし、このコードにおいては、一度、Foo関数が実行されてしまうので、スクリプトを読み込んだときに、警告が出てしまいます。
そこで、実行させないように、以下の記事のやり方をヒントに、SIEを編集してみました

JavaScriptの継承について

https://gist.github.com/3301790
編集後のソースコードは次のような形です。

 Object._create = function (func) {
   var f = function(){};
   f.prototype = func.prototype;
   return new f();
 }
 function Foo() { //SuperClass
   alert("");
 };
 function FooFoo() { //SubClass
   Foo.apply(this);
 };

 FooFoo.prototype = Object._create(Foo);
 FooFoo.constructor = Foo;

テストを繰り返した後で

もし、テストを繰り返してみて、うまくいくようならば、次回のリリースで反映させます。

追記 (8月28日)

正確さを期すため、applyメソッドを追加しました。