Ruby中的ExecJS-Javascript对象实例?
如果我有一个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(); };
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=