2007年11月21日 (水)
JavaScript 第五版読書会に行ってきた
JavaScript 第五版読書会#1に行ってきた
勉強会で喋らせてもらった後に、Kanasan さん主催の「JavaScript 第五版読書会#1」。
masayashi くんを誘って、会場に行くと kur がいてびっくらこいた。
JavaScript 初心者対象と言うことだったのですが、 勉強会などに参加しようという方々は、やはりというか、ほかの言語経験などもある方が多く 言語使用のディープな部分に話が行くことが多かったように思います。ギークスパイラル。
僕としては、非常に面白くて大歓迎だったのですが、不満があった方がおられても不思議じゃないかなぁと感じました。 気にしすぎなのでしょうか。
Date などは避けたい識別子とされているけど、使わない方が良いのでは?(p.20)
Firebug にて検証
>>> new Date(2006,11,11); Mon Dec 11 2006 00:00:00 GMT+0900 >>> Date = 1 1 >>> new Date(2006,11,12) // => Error Date is not a constructor
これは嬉しくないなぁ。
暗黙の型変換はややこしい
あくまでも一例
"21"+"2"; // => 212 "21"*"2"; // => 42
文字列周りは鬼門が潜んでいそう
Array.new( 10, "*" ) がない
配列を初期化して生成したい時に、良いメソッド/コンストラクタがない
(new Array(10+1)).join("*").split(""); // kanasan++
これは良いw
暗黙の変換順序(p.34, p.41)
- valueOf
- toString -> Number
- Error?
( { valueOf: function() { return 3; } } ) + "4" //=> 34 ( { valueOf: function() { return 3; } } ) + 4 //=> 7 ( { valueOf: function() { return 3; }, toString: function() {return "1"; } } ) + "4" //=> 34
var 省略するとグローバル(p.51)
明示的に宣言しないと全部グローバルになるそうです。
this, window, self
ブラウザ上では、フレームが絡まなければ、トップレベルで
this === window // => true window.window === window // => true this === self // => true window.this === window.self // => true
self の存在意義がわからない。
delete の謎
delete が true を返すのは、プロパティの削除に成功したか、プロパティが存在しない時?
a = [1,2]; delete a.concat // => true a = [1,2]; delete a.concat; a.concat([3,4]) // => [1,2,3,4] a = [1,2]; delete a.concat; a.concat === undefined // => false a = [1,2]; a.test = function() { return 1; }; delete a.test // => true a = [1,2]; a.test = function() { return 1; }; delete a.test; a.test === undefined // => true
組み込み関数はプロパティじゃないから true が返ってくるのかな? @ Firebug
これ、バグじゃないのかなぁ?
Kanasan.JS #2 は 12/08
LiveCoding が 12/01。これはいけない。
Kanasan.JS #2 は 12/08。これは参加途中抜け予定。
Ruby 関西勉強会が 12/15。これは絶対行く。学位授与前日だけど行く。
バーミヤン
バーミヤンで higeorange さんと shin1x1 さんと Tagawa さんと少し話す。どうにも、どういう風に話して良いのか分からない部分がある。




どうもrubyistのujihisaです。<br>本日はお越しいただきどうもありがとうございました!
こちらこそ、開催していただいてありがとうございました!<br>Live Coding にはいけないのですが、Kanasan.JS#2、Ruby 勉強会も楽しみです。
kanasanです。<br>読書会お疲れさまでした。<br>初期値を指定する配列の作成方法は制限がありますのでご注意下さい。<br>この点について、補足するEntryを書いていますので、よろしければご参照下さい。<br>www.kanasansoft.com/weblab/2007/11/post_14.html<br>それでは。
やっぱり,<br><br>Array.prototype.fill = function( value ) {<br> for( var i=0; i < this.length; i++ ) { this[i] = value; }<br> return this;<br>};<br><br>みたいなのを定義するしかないってことなんですね….帰ってからエントリに書きます.<br><br>Array.new = function( size, value ) {<br> var tmp = new Array( size );<br> for( var i=0; i < tmp.length; i++ ) { tmp[i] = value; }<br> return tmp;<br>};<br><br>は evil でしょうかw.これなんて Ruby.