Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的ExecJS-Javascript对象实例?_Javascript_Ruby_Execjs - Fatal编程技术网

Ruby中的ExecJS-Javascript对象实例?

Ruby中的ExecJS-Javascript对象实例?,javascript,ruby,execjs,Javascript,Ruby,Execjs,如果我有一个javascript对象,我通常会与该对象及其方法进行如下交互: var obj = someObject.getInstance(); var result = obj.someMethod(); someObject.prototype.someOtherMethod = function() { //do stuff }; someObject.prototype.someMethod = function(foo) { this.someOtherMethod(); };

如果我有一个javascript对象,我通常会与该对象及其方法进行如下交互:

var obj = someObject.getInstance();
var result = obj.someMethod();
someObject.prototype.someOtherMethod = function() { //do stuff };
someObject.prototype.someMethod = function(foo) { this.someOtherMethod(); };
其中someMethod的定义如下:

var obj = someObject.getInstance();
var result = obj.someMethod();
someObject.prototype.someOtherMethod = function() { //do stuff };
someObject.prototype.someMethod = function(foo) { this.someOtherMethod(); };
但是,当我想通过ExecJS调用Ruby中的someMethod时,我遇到了一个错误:

context = ExecJS.compile(# the javascript file)
context.call('someObject.getInstance().someMethod') 
# Gives a TypeError where Object has no method 'someOtherMethod'
另一方面,javascript模块中定义的函数工作正常:

someFunction = function() { // do stuff };

# in Ruby
context.call('someFunction') # does stuff
ExecJS可以处理Javascript对象及其方法吗,或者我只能用它调用函数吗


关于具体的应用程序,我正在研究,但是Libphonenumber中的parse函数由于上述原因不起作用。

通过一些实验发现了答案。我通过使用context.exec()而不是调用来获得所需的功能

js = <<JS
var jsObj = someObject.getInstance();
var res = jsObj.someMethod();
return res;
JS

context.exec(js);
js=