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 Rubycontext.call('someFunction') # does stuff
ExecJs可以处理JavaScript对象及其方法,还是只能用它来调用函数?
关于具体的应用程序,我正在研究https://github.com/joenoon/libphonenumber-execjs,但libphonenumber中的解析函数由于上述原因不起作用.
解决方法 通过一些实验发现了答案.我设法通过使用context.exec()而不是调用来获得所需的功能.Js = <<Jsvar JsObj = someObject.getInstance();var res = JsObj.someMethod();return res;Jscontext.exec(Js);
但是,如果您的方法返回JavaScript对象,则必须先将其序列化,否则解析结果,以便ExecJs将其返回到合适的Ruby对象中.
总结以上是内存溢出为你收集整理的ExecJS – Ruby中的Javascript对象实例?全部内容,希望文章能够帮你解决ExecJS – Ruby中的Javascript对象实例?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)