2012-06-02 6 views
3

В принципе, есть страница, которую я посещаю, которая использует RequireJS. Я хочу внести коррективы в эту страницу, поэтому я пошел по маршруту с окнами. Хотя, глядя на стороне клиента кода я вижу, что есть модуль определяется как так:Переопределение модуля RequireJS - возможно ли это?

define("settings", [], function() { 
    return { 
    SETTINGA: "100", 
    SETTINGB: "200", 
    etc. 
    } 
}) 

Я хочу, чтобы добавить свой собственный элемент в массив параметров, а также изменить некоторые параметры без необходимости переопределить модуль в моем usercript (с изменениями), а затем удалить/прочитать его. Можно ли просто внести коррективы в этот модуль?


P.S. Я использую метод Script Injection, чтобы заставить мой пользовательский интерфейс взаимодействовать с другим javascript на исходной странице.

Кроме того, делая require("settings") в консоли Javascript возвращает объект (не массив), поэтому я не могу делать такие вещи, как require("settings")[0] или require("settings").push(...), однако я могу получить доступ к настройкам, выполнив require("settings").SETTINGA. Итак, я не уверен, как добавить/переопределить настройки для этого, поскольку это не массив?

ответ

4

Используйте это:

require('settings').new_property = 'new value'; 
+0

Спасибо! После прополки более сложных решений в Интернете было замечательно видеть такое простое решение. Теперь я использую этот метод для исчерпания внутренних зависимостей тестируемых компонентов. –

2

Причина вы не можете получить или добавить настройки в «массив параметров» является то, что вы не создаете массив, чтобы начать с. {foo:bar} - объект литерал, а не литерал массива ([foo,bar]).

Смежные вопросы