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メソッドを追加しました。