假设在我的模块中我有这样的东西:
Object.defineProperty(Array.prototype,
'sayHello', {get: function(){ return "hello I'm an array" });
现在,我想让任何导入模块的脚本都可以看到此更改。这可能吗 ?
我尝试相应地修改 EXPORTED_SYMBOLS,但到目前为止我没有得到任何结果。
有没有另一种方法来实现同样的事情?(即加载模块,将不可枚举的属性添加到选定的对象 - 如上面示例中的 Array)
编辑:
在 Alnitak 下面关于value:
和get:
...的评论之后
我现在可以定义和使用这样的属性:
Object.defineProperty(Array.prototype, 'firstId' , {value: function(){return this[0].id}});
var a = [{id:'x'},{id:'y'}]
a.firstId()
按预期返回
x
现在:是否可以将 defineProperty 调用放在一个模块中,从脚本加载一个模块并期望该脚本的数组将作为上面的数组?
编辑2:
我正在用 xulrunner 编写一个应用程序,我正在使用 Components.utils.import() 来加载模块 - 我认为(可能是错误的)这个问题可以更普遍地提出......