ハイブリッドアプリ開発[実践]入門という本を読んで、またJavaScriptを使ったandroidアプリ開発への興味が戻って来ました。Titaniumを弄ったときと違って自分にとってはCoffeeScriptの存在が大きい、JavaScriptは嫌いだけどCoffeeScriptならやる気が湧きます。試しに以前記事を書いたRuby製の三目並べのプログラムをCoffeeScript(最終的にはJavaScriptを使ったandroidアプリ)に移植して見ようと思い取り組み始めたらいきなり問題に遭遇したのでTips的に記事を書いてみます。それにしても昔のWebシステムはブラウザのJavaScript機能がOffでも使えることを要求されたものなのに、リッチなUIを要求するユーザーの声がどんどん大きくなり、最近ではJavaScript(jQuery,Ajax)無しは考えられない感じですね。JavaScriptを避けることが出来ないのなら、どうにかしてJavaScriptを楽に生成しようという流れが続いてます。b[3]画面にはundefinedと表示されました。エラーにもなりません。argsとやったらエラーになります1以下のようにパラメータを可変個引数にして、配列要素をバラバラのパラメータにして渡しても同じです。b[3]試しにArrayクラスに新しいプロパティを追加してあげるとそちらの方はちゃんと代入出来ました。b.data[3]まず、JavaScriptでもクラスの拡張(オープンクラス?)が簡単に出来ることに驚きました。Rubyと同様にオブジェクト指向出来るんですね。console.log(b[3]);}).call(this);なんじゃこりゃ〜。CoffeeScriptを介さずに元のRubyのコードからこのJavaScriptのコードを書ける気がしない。慣れの問題もあるでしょうが、CoffeeScriptが見事に抽象化してくれているのがわかります。args);こうなっていて値を置き換えてくれても良さそうですが入りません。[];と定義されていて、JavaScriptではprototypeプロパティを介してデータを参照しているようです。argsとやったりしましたが値はセットされませんしエラーにもなりません。[0...args.length]とすることでRubyからCoffeeScriptを介してJavaScriptに移植することが出来ました。b[3]配列の大括弧([]、bracket)さえもメソッドとして実装しているRubyとの違いかもしれませんが、とりあえず移植できてなによりです。今までJavaScriptに関して真剣に取り組んだことが無かったのですが、買ってきた本を見ながら移植を進めて、また何か問題が発生すれば記事を書いてみます。CoffeeScriptでは@はthisの別名、::はprototypeの別名)。