javascript - making primitive types extendable
http://blog.livedoor.jp/dankogai/archives/51529944.html
の記事で、これだと予期しない不具合を増やしかねないよなぁ。と。
上の記事は、下記の Extend.js に言及しているのですが、こんな無防備に晒しちゃっていいのか?っと思ったのが今回記事。コメントに書こうと思ったらログインしなくちゃいけない orz
■ あゆたブログ - 株式会社あゆた
【連載】Extend.jsで楽しくJavaScriptプログラミング! - 第1回 Extend.jsのつかいかた (JavaScript,javascript,extend.js) - 株式会社あゆた
http://blog.ayuta.co.jp/blog/2010/07/22/Extend.js%E3%81%A7%E6%A5%BD%E3%81%97%E3%81%8FJavaScript%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%EF%BC%81-Extend.js%E3%81%AE%E3%81%A4%E3%81%8B%E3%81%84%E3%81%8B%E3%81%9F
404 Blog Not Found さんは非常に勉強になるサイトなので、怠け気味ではありますがよく参考にさせて頂いています。なので本人さんは分かり過ぎるほど分かっていて、承知しつつ書いているんだと思いますが、下記が通ってしまう。
if(_(0)) alert('pass');
if(_('')) alert('pass');
if(_('') !== '') alert('pass');
そんなの当たり前だろ!
とは行かないです・・・よね。「一番使い出のありそうな Number と String にプリミティブ型を期待してしまう」方が、遥かにザラな気がします。個人での開発なら自分が使うだけなので全く問題はないけれども、その不具合を懸念するためだけに .valueOf() 必須とかになってしまう。
まあ、Extend.js の X() でも jQuery の $() でも、渡した物を拡張する事が真意なので「常にそれを意識しろ」というレギュレーション下ならってところですか。
というか、ひょっとしたら意識改革でも狙ってやってるのかもしれないが・・・。全部 object なら問題なかろうが!?とかw
この記事へのコメント