Home > Javascript > [間違え] Javascriptでクラスの継承をする [訂正予定]

[間違え] Javascriptでクラスの継承をする [訂正予定]

Photo by GLUEKITS

 すみません。下記記事は間違っています。近々訂正記事を書きます。

訂正記事

Javascriptでクラスベースっぽく書いてる時に、継承したくなった場合の書き方。
ググってもすぐ出なかったのでメモ。

IE6,7,8 Firefox2,3,3.5 Safari 3,4で確認。

p.s
node.jsに、MySQLドライバがないので、書き始めました


<html>
<body>
<div id="result"></div>
<script>
var puts = function(str) {
var el = document.getElementById('result');
    el.innerHTML = el.innerHTML + str + "<br/>";
}

var Parent = function(n) {
    this.n = n;
}
Parent.prototype = Array.prototype;
Parent.prototype.display1 = function() {
    puts("display1:"+this.n);
}
Parent.prototype.display2 = function() {
    puts("display2: ERROR");
}

var Child = function(n) {
    Parent.apply(this, [n*2]); // 親クラスのコンストラクタを呼ぶ
}
Child.prototype = Parent.prototype;

Child.prototype.display2 = function() {
    puts("display2(over):"+this[0]);
}

Child.prototype.display3 = function() {
    puts("display3:"+this.n);
}

var child = new Child(1);
child.push(10);
child.push(20);
child.display1();
child.display2();
child.display3();
</script></body>
</html>

Related posts

    No Related Posts

masuidrive(増井 雄一郎)
PukiWikiなどのオープンソース活動を経て、2005年からRuby on Railsに的を絞り、WEB2.0社 PingKingやニフティ アバウトミーの開発に関わる。これまでのフリー活動から転身し、2007年は1年だけ会社員として働いた後、起業のため渡米。2008年4月にBig Canvas Inc.設立。現在、米ベルビュー在住。

Comments:2

os0x 10-02-14 (Sun) 23:28

Parent.prototype = Array.prototype;
はまずいです。
Parent.prototypeはArray.prototypeでもあるわけで、display1 はすべての配列のメソッドとなってしまいます。
Child.prototype = Parent.prototype;
も同じくです。
一応、 http://nanto.asablo.jp/blog/2006/10/18/566348 あたりはそれなりに使えますが、Arrayに関してはlengthがネックになって完全な継承を行うことはできません。
http://d.hatena.ne.jp/sawat/20070221/cant_extends_array

masuidrive 10-02-15 (Mon) 14:42

おお、そうですね。ご指摘ありがとうございます。

調べて訂正記事を書きます。

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://blog.masuidrive.jp/index.php/2010/02/14/inheritance-on-javascript/trackback/
Listed below are links to weblogs that reference
[間違え] Javascriptでクラスの継承をする [訂正予定] from @masuidrive blog
pingback from とっても! ちゅどん(雑記帳) » Blog Archive » Javascriptでクラスの継承をする – @masuidrive blog 10-02-15 (Mon) 2:36

[...] Javascriptでクラスの継承をする – @masuidrive blog [...]

Home > Javascript > [間違え] Javascriptでクラスの継承をする [訂正予定]

Search
Feeds
Meta

Return to page top