himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

Java strings and JavaScript strings

JavaJavaScript の String は異なる。Java の String は java.lang.String 型のインスタンスなので、そのクラス定義されたメソッドを持つのに対し JavaScript の String には String.prototype で定義されたメソッドがある。 よく間違えられるのは length (Java ではメソッド、JavaScript では property)。

js> javaString = new java.lang.String("Java")
Java
js> jsString = "JavaScript"
JavaScript
js> javaString.length()
4
js> jsString.length
10

Rhino では 2つの String の違いを緩和する手段がある。まず JavaScript の Stirng を Java の String に変換し Javaメソッドに渡すことができる。上の例では java.lang.String コンストラクタで String オブジェクトを作成し、その property を参照している。

また Rhino では Java String から java.lang.String のクラス定義と衝突しない限り JavaScript メソッドを呼べる。

js> javaString.match(/a.*/)
ava