« OSS コンファレンスで講演 | メイン | JavaScript を学ぶ上で読むべきウェブサイト »

2006年10月18日

JavaScript の String 型を継承する

 javascript - プロトタイプ的継承 (javascript - プロトタイプ的継承) について。

 結論から言うと、String 型も継承っぽいことができます。こんな感じ。

function String2(s) {
  this._s = s;
}
String2.prototype = new String();
String2.prototype.valueOf = String2.prototype.toString = function () { return this._s.toString(); }
String2.prototype.x = function (c) {
   var s = '';
   while (c--) s += this;
   return new String2(s);
}
var s2 = new String2("abc");
alert(s2.x(2).split(''));

 実体の持ち方が多少変わっちゃいます厳密に言うと継承とは違うんですが、valueOf と toString を除く全ての String.prototype.XXX は、任意の型を this として呼び出せるので、このように書くことができるのです。そのための注が、ECMA の各メンバ関数の説明にだらだらとついています。

14:32 変更: より直截な例に変更。

投稿者 kazuho : 2006年10月18日 14:14 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/838

このリストは、次のエントリーを参照しています: JavaScript の String 型を継承する:

» javascript - プロトタイプ的継承完全版 from 404 Blog Not Found
Kazuho@Cybozuさま、いつもありがとうございます。 Kazuho@Cybozu Labs: JavaScript の String 型を継承す... [続きを読む]

トラックバック時刻: 2006年10月18日 21:12

» [javascript] 関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 from IT戦記
最近、プロトタイプ的継承の話しが盛り上がっています。 http://blog.livedoor.jp/dankogai/archives/5066206... [続きを読む]

トラックバック時刻: 2006年10月19日 05:31