ExecJS – Ruby中的Javascript对象实例?

ExecJS – Ruby中的Javascript对象实例?,第1张

概述如果我有一个 javascript对象,我通常会与对象及其方法进行交互,如下所示: var obj = someObject.getInstance();var result = obj.someMethod(); 其中someMethod定义如下: someObject.prototype.someOtherMethod = function() { //do stuff };someObj 如果我有一个 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 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对象实例?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1275181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存