タグ

ブックマーク / qiita.com/youchan@github (2)

  • OpalのJSはどのように実装されているのか - Qiita

    この記事はOpal Advent Calendar 2016の24日目の投稿として書いています。 今日はクリスマスイブですね。昨日、予告したとおり今日はJSの実装について書きます。 例によって使いかたからです。 require 'js' %x{ function Foo() { this.bar = function() { return 'bar'; }; this.baz = 'baz'; }; } foo = JS.new(`Foo`) puts foo.JS.bar puts foo.JS[:baz] 昨日のサンプルと似ていますね。どちらもJavaScriptのコードを呼びだすためのAPIということがわかります。 NativeはRubyのオブジェクトでラップしてRubyのオブジェクトとして扱えるようにしたものですが、JSはJavaScriptのオブジェクトを直接操作するためにつくら

    OpalのJSはどのように実装されているのか - Qiita
  • OpalのNativeはどのように実装されているのか - Qiita

    この記事はOpal Advent Calendar 2016の23日目の投稿として書いています。 今日はNativeの実装について書こうと思います。 その前にNativeのつかいかたです。 require 'native' %x{ var foo = new Object(); foo.bar = function() { return 'bar'; }; foo.baz = 'baz'; } n = Native(`foo`) puts n.bar puts n.baz こんなプログラムを実行してみましょう。n.barもn.bazもそれぞれ文字列を返します。 Rubyのこれらの呼び出しはすべてメソッド呼び出しになります。 一方、JavaScriptではプロパティに関数だったり、文字列だったりをアサインすることができます。 Nativeは関数であれば関数を実行した結果を返すし、文字列などの

    OpalのNativeはどのように実装されているのか - Qiita
  • 1