忍者ブログ
nowaからの移行先
Posted by - 2025.05.07,Wed
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Posted by lawrhino - 2007.07.06,Fri
Number型のprototypeを ruby を真似て拡張してみる。
Number.prototype.times = function(iterator){
for(var i = 0; i < this; i++)
iterator(i);
}

指定回数、引数で受け取った処理を繰り返し
実行する関数だ。

これを
10.times(alert)

として呼び出そうと試みる。
・・・が syntax error となり実行できない。


しかし
var num = 10;
num.times(alert);

と一度変数に代入すると上手くいく。

また
(10).times(alert);

としても上手くいく。

という事は括弧で括り評価をしてやる事で初めて、
Number型オブジェクトになり、
変数に代入する場合は代入した時点で評価されるという事か。


他の基本型についても同様の実験をしてみた。
String.prototype.disp = function(){ alert(this) };
"Hello".disp();

まぁこれは予想通りというか問題なく実行できた。

次にBoolean
Boolean.prototype.disp = function(){ alert(this) }
true.disp();

数値と同じような位置付けに見えるけどこちらは
普通に実行できた。

さらに
RegExp.prototype.disp = function() { alert(this) }
/abcde/.disp();

も実行できた。

こうなると何故数値だけ??って疑問が。
そういう仕様なんだろうけどなんかしっくりこない仕様だなぁ。

追記:
その後、単純に数値の場合10.timesとしたらピリオドを小数点と判断するから
エラーになるだけだという事がわかった。
また他にも10..timesのように書く事も可能。
PR
Comments
Post a Comment
Name :
Title :
E-mail :
URL :
Comments :
Pass :   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
TrackBack URL
TrackBacks
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
プロフィール
HN:
lawrhino
性別:
非公開
忍者アド
最新TB
バーコード
アクセス解析
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]