Допустим, в моем модуле у меня есть что-то вроде этого:
Object.defineProperty(Array.prototype,
'sayHello', {get: function(){ return "hello I'm an array" });
Теперь я хотел бы сделать это изменение видимым для любых скриптов, которые импортируют модуль.Возможно ли это?
Я попытался соответственно изменить EXPORTED_SYMBOLS, но пока не получил никаких результатов.
Есть ли другой способ добиться того же?(т.е. загружать модули, которые добавляют неперечислимые свойства к выбранным объектам - например, Array в приведенном выше примере)
EDIT:
После комментария Альнитака о value:
и get:
.
Теперь я могу определить и использовать свойство, подобное этому:
Object.defineProperty(Array.prototype, 'firstId' , {value: function(){return this[0].id}});
var a = [{id:'x'},{id:'y'}]
a.firstId()
, которое возвращается, как и ожидалось
x
Теперь: можно ли поставитьвызов defineProperty в модуле, загрузка модуля из сценария и ожидание того, что массивы этого сценария будут действовать так же, как показано выше?
EDIT2:
Я пишу приложение с помощью xulrunnerи я использую Components.utils.import () для установки модуля - я подумал (возможно, неправильно), что вопрос можно поставить более широко ...