LoginSignup
2
2

More than 5 years have passed since last update.

therubyracerでオブジェクトの使い方3種

Last updated at Posted at 2015-04-18

therubyracerは、V8 JavaScriptエンジンをRubyから使うためのGemです。ちょっと試してみたので、忘れないうちにメモしておきます。

オブジェクトを作って、そのメソッドを呼び出すという単純な例を、RubyとJavaScriptで実行する部分を変えて3種類作ってみました。

準備

JavaScriptでクラス(?)を定義する。

require 'therubyracer'

v8 = V8::Context.new

v8.eval <<EOF
function Friend(name) { 
    this.name = name;
    this.hello = function() { return "Hello, " + this.name };
} 
EOF

その1: 全部JavaScriptでやる

JavaScriptでオブジェクトを作り、メソッドを呼び出す。

script = <<EOS
var suzuki = new Friend("Suzuki");
suzuki.hello();
EOS
puts v8.eval(script)  # => Hello, Suzuki

その2: オブジェクトをJavaScriptを作る

JavaScriptでオブジェクトを作り、Rubyでメソッドを呼ぶ。

tanaka = v8.eval "new Friend('Tanaka')"
puts tanaka.hello  # => Hello, Tanaka

その3: 全部Rubyでやる

JavaScriptからコンストラクタを取り出す。
Rubyでオブジェクトを作り、メソッドを呼び出す。

Friend = v8.eval "Friend"
kimura = Friend.new("Kimura")
puts kimura.hello  # => Hello, Kimura
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2