Firefox Add-on SDK 导出数组中的函数不可用
Function within exported array in Firefox Add-on SDK not available
我有一个模块,它导出一个包含函数参数的对象数组:
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,因此当您发出消息时它们不会被编码。
为了避免该问题,您必须将该逻辑从您的对象移至插件的主脚本或内容脚本:这取决于您需要对该消息执行的操作。
我有一个模块,它导出一个包含函数参数的对象数组:
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,因此当您发出消息时它们不会被编码。
为了避免该问题,您必须将该逻辑从您的对象移至插件的主脚本或内容脚本:这取决于您需要对该消息执行的操作。