Home‎ > ‎WebDev‎ > ‎

JavaScript

081230_22_27

array.join の方が、+で文字列つなぐより高速。
array.shift は、array.popより遅い。
array.sort は、数値を正しくソートできない。文字列に変換して比較してしまうため。
functino.apply は、マスターしておきたい。
object.hasOwnProperty 自分自身(プロトタイプ上ではない)プロパティが存在するかのチェック。
regexp.exec なんでもできるけど、遅い
regexp.test 早いけど、true,false を返すだけ
string.substring は、使わない。代わりに、string.slice を使う。


+の挙動
2 + null //2
"2" + null //"2null"
2 + NaN //NaN
"2" + NaN //”2NaN”

eval は、使うべきではない。遅くなる。
このため、内部的にeval が使われる、Function コンストラクタ
setTimeout,setInterval で引数に文字列を使うことは、やめておくべき。
switch case で、処理の継続は行うべきではない。
Javascript では、ビット演算子を使うメリットはない。

JavaScriptのチェッカ JSLint
http://www.jslint.com/




081229_21_54

なんだかんだで、今一番使っているのは、JavaScriptだったりする。
でも、これも、いまいち中途半端なレベルなのだな。
こないだ、日本語版がでた「JavaScript The Good Parts」 を読んでいるところなので、
もうちょっとましな書き方がでkりうようになりたい。

ECMA Script 仕様書 日本語訳
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/

DOM 仕様書 日本語訳
http://www2u.biglobe.ne.jp/~oz-07ams/prog/

ここらへんも、一度はちゃんと目を通しておかなきゃだ。

後は、ライブラリのおさらい
  • JQuery
  • JSDeferred
bodyとかDOM参照する時は、
var body=document.body とかにして参照する。
特に for loop とかで回す場合。

重いループ処理は、場合によっては、setTimeout で、処理をブラウザに
戻すことで、体感速度あがる。

テストは、
Selenium とか JSUnit

デバッグツール
Firefox > Firebug
http://getfirebug.com/jp.html
IE > Internet Explorer Developer Toolbar (IEDT)
http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en
Safari > そのままで、開発モードオン
Opera > Dragonfly
http://www.opera.com/dragonfly/

Spidermonkey コマンドラインシェル
https://developer.mozilla.org/ja/Introduction_to_the_JavaScript_shell
MacPorts にもあるらしい。

(WEB+DB vol.48から)

080617_17_26
さて、前にいつかいたモノやら忘れたけど、最近またJavaScriptを触っていたり、いなかったり。

http://gihyo.jp/dev/feature/01/firebug/0003

会社のマシンの、開発環境としての最低ラインはとりあえずととのったかんじなので、今度はすこしJavaScriptの関連を調べている。

  • AJAX
  • DOM
  • JavaScript
  • Debug
  • FireFox extention
  • Greasemonkey

このあたりから、検索かけてみたり、情報収集中。

javascriptのprototypeに関する理解

何にせよ、自分で試してみることが大事だとおもう。自戒の意味も込めて。

後、なにより、こういうノウハウを外側に出してくれる人たちには、本当に素敵だ。
そいうことを許さない会社はいまだに多いと思うし、推奨する会社は多くはないだろう。
個人の意識の問題が一番大きいのはもちろんだけど、周りの環境や雰囲気も大事。

tips

http://usrb.in/amachang/static/gaiax01/
http://www.thinkit.co.jp/free/article/0703/10/5/
ネームスペースのお話。

Javascriptのデバッグ

FirefoxのExtentionで Firebug これだけは入れておきたい。

this の扱い

Classモジュール化したいとおもって

this.req = new XMLHttpRequest();
this.req.onreadystatechange = this.processReqChange;


とか書いてみるけどうまくいかね。

this.req.onreadystatechange = function(){
this.processReqChange();
}

とかも駄目。
で、remembermilkとかのソースをみてみる。
http://www.rememberthemilk.com/

this.req = new XMLHttpRequest();
var self = this;
this.req.onreadystatechange = function(){
self.processReqChange();
}

で、ようやくうまくいった。

まぁ、おいらはflashのActionScriptとかやってるけど、thisの扱いって言語仕様の中でわかりにくくなりやすいところではある。

アプリケーションで使うjavascript

photoshopの自動処理について相談を受けた。
photoshopやillustrator といったアプリケーションは、その使用方法の必要上、割と早くからアプリ内部で処理の記録とか再生・制御機能やバッチ処理をつけていたとおもうのだけど、それだけではどうしてもできないことがあったりする。
それで、MacだとAppleScript、WinだとVBなんかでかなり細かい制御ができるわけなんだけど、javascriptでもできるようになってたのね。(随分古い話みたい。)
Flash も swf内の制御はActionScriptでやってるけど、アプリケーションの制御はjavascriptで行える。(こっちは知っていた)
後、Firefoxなんかもjavascriptでいろいろできる。
最近はやりのWidgetsとかもそうだし。
javascriptってApplicationをマクロ的に操作するインタフェースの標準になりつつあるのかな?
photoshopの場合、複数間アプリの連携にはjavascriptは使えない。でも、そのうちOSのAPIにjavascriptがのったりするんだろうかねぇ。

Mac ではこんなのもあるっておしえてもらったよ。
http://www.latenightsw.com/freeware/JavaScriptOSA/index.html
(AppleScript の代わりに JavaScript を使えるようにするライブラリ)
Win の WSH だと標準で VBScript と JScript が選択できるらしい。
(by tommy)

FirebugLite

機能アップがうれしいFirefoxの機能拡張Firebugだが、他のブラウザでも使えるようにjavascriptで提供されたFirebugLiteというものがあるらしい。
http://www.getfirebug.com/lite.html

Javascriptへの理解

http://www-06.ibm.com/jp/developerworks/java/library/j-cb12196/index.shtml?ca=drs-
javascriptへの高度な理解の為の第一歩みたいな。

http://d.hatena.ne.jp/amachang/20070411/1176303073
例によってamachang