私は、javascriptで関数プロトタイプを拡張できるようになっています(つまり、すべての関数に関数を追加しています)。 目的は、別の言語(すなわち、この特定の設定では文字列を介してのみ通信できるruby)間の交換用の形式に変換することです。 Iこれは、他のすべてのために働いているので、関数プロトタイプを拡張する
Number.prototype.to_ruby = function() { return this.toString(); }
のように私はそれがしたい私は、RubyのオブジェクトとJavaScriptオブジェクトのto_ruby
法上to_js
方法を定義することで、他の種類の周りに渡すことができるように、既にシステムを持っています、関数用ではありません。
_empty = function() {};
_empty.__proto__.to_ruby = function() {
return 'JSFunction.new(' + this.toString().to_ruby() + ')';
};
しかし、これは(システムの要件である)IEでは動作しません:私はは、それは次の操作を行って、クロームで動作するように取得することができます。
私はIDのような機能のトラックをどこかに保持しているオブジェクトがあると知っていますが、それらを作成した同じインスタンスで使用されることは保証できません。
すべての他の失敗私はちょうどそれとの特別なケースとの契約(すなわち、isFunction(instance) ? fn_to_ruby(instance) : instance.to_ruby()
に関数を書くこともできますが、可能であれば、私はむしろ、このモデルを維持するだろう。
ハァ!私はちょうど同じことを調べていることがあります。 SketchUp Ruby <-> JavaScriptブリッジ。 :D – thomthom