Аргументы функций в формате json (фактически, литерал объекта) - PullRequest
0 голосов
/ 19 июля 2011

Возможно ли добавить аргумент к ссылке на функцию в литерале объекта:

var custom = {onLoadBegin: onLoadBegin};

Хотелось бы, чтобы это было

onLoadBegin('argument')

Ответы [ 4 ]

2 голосов
/ 19 июля 2011

Если у вас есть функция с именем onLoadBegin, которая является внешней по отношению к custom, то вы можете сделать это:

var custom = {
    onLoadBegin: function() {
        onLoadBegin("argument");
    }
};

Когда вы вызываете custom.onLoadBegin, она вызовет исходную onLoadBegin сваш аргумент.

0 голосов
/ 19 июля 2011

Вы должны поместить свой обработчик в замыкание:

var loadHandler = function() {
  doSomething('argument');
}

onLoadBegin( loadHandler );

Вы также можете сделать это с помощью анонимной функции:

onLoadBegin( function() { 
  doSomething('argument');
});
0 голосов
/ 19 июля 2011

формат JSON не включает функции, он только для данных.Пожалуйста, предоставьте дополнительную информацию о того, что именно вы хотите достичь

Если вас не интересует стандарт, и вы просто хотите добиться своей цели, вы можете сделать это следующим образом:

{functionName: [argument1, argument2, ...]}

А на стороне клиента сделайте что-то вроде этого:

window[key].apply(this, value)
0 голосов
/ 19 июля 2011

Да, в вашем примере вы могли бы позвонить custom.onLoadBegin(argument)

...