如果我有一个 javascript 对象,我通常会像这样与该对象及其方法进行交互:
var obj = someObject.getInstance();
var result = obj.someMethod();
其中 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 对象及其方法,还是我只能用它调用函数?
关于具体的应用程序,我正在研究https://github.com/joenoon/libphonenumber-execjs,但由于上述原因,Libphonenumber 中的解析功能不起作用。