我有一个模块,它导出一个包含函数参数的对象的数组:
var myArray = [
{
id: "firstObject",
func: function() {
console.log("Hi from function!");
}
}
];
exports myArray = myArray;
此模块包含在另一个脚本中,该脚本向客户端脚本发出事件并将数组作为参数传递:
var {myArray} = require("./array.js");
for (var i = 0; i < myArray.length; i++) {
self.port.emit("someEvent", myArray[i]);
}
在客户端,我现在可以访问对象的 id
,但不能访问 func
参数所保存的函数。实际上,func
参数根本没有在客户端设置。
这是为什么呢?如何规避这一点?
最佳答案
The payload can be any value that is serializable to JSON.
和functions are not JSON serializable ,因此当您发出消息时它们不会被编码。
为了避免这个问题,您必须将该逻辑从对象移动到插件的主脚本或内容脚本:这取决于您需要对该消息执行什么操作。
关于javascript - Firefox Add-on SDK 中导出数组中的函数不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382000/