my notebook blog : JavaScript
再帰を使って木構造をリストに変換する JavaScript
Adobe XD の ドキュメント構造は scenegraph.root をルートノードとした木構造として表現されています。
これらのノードをスクリプトから操作するには、この木構造をたどる必要があります。
いちいちたどるのは面倒なので、木構造からリストに変換することを考えることにします。
Rhino で Java 側でつくった配列クラスを使う
カスタムオブジェクトを Java側でつくって JavaScript であれこれしたい場合で、 そのカスタムオブジェクトが配列的なクラスの場合 list[0] のようにアクセスしたときに意図した値を返す方法.
結論としては、ScriptableObject を拡張してつくったサブクラスで Object get(int index, Scriptable start) メソッドをオーバーライドすればOK.
Rhino を使って Java から JavaScript を実行する
将来的には nashorn が廃止になるらしい. nashorn の代わりに Rhino で実行する方法を調査したのでメモします.
自分で書いた JavaScript のモジュールを html と node.js の両方から使える形にビルドする
クライアントサイド/サーバサイド どちらからでも使える JavaScript モジュールをつくる場合の備忘録。 ここでは、3x3 マトリックスを使って座標を別の座標に写す処理を行うモジュールを例に node.js のプロジェクトを作成してみます。
関数型オブジェクト指向プロラミングを JavaScript に翻訳する
「入門 Haskell プログラミング」の Section 10 に Haskell で オブジェクト指向的なコード例が出ていた。 興味深い。ただ、Haskell のコードを見てもさっぱり意味がわからないので、JavaScript に変換してみた。
Nashorn, AbstractJSObject を使って JS Array っぽいオブジェクトをつくって使う
Java8 からは Rhino に変わって Nashorn を使って Javascript を実行することができます。 Binding 機能を使えば、Javascript から Java 側で作成した自前のオブジェクト利用することも簡単です。
そこで、この機能を使っていろいろと実験をしているのですが、少し困った問題が出てきました。 Java の ArrayList オブジェクトを Nashorn に Binding して使う場合、 こちらとしては、Javascript の Array オブジェクトと同じように振る舞ってほしいのですが、 それとは微妙に作動が違うのです。
これを解決するためにいろいろ方法を探したのですが、どうやらAbstractJSObject を使って、 Javascript の Array オブジェクトと同じように振る舞うオブジェクトを実装すればよいようです。