Какой путь правильный и почему? - PullRequest
0 голосов
/ 08 марта 2011

Если бы я хотел присвоить JSON-значение массив из метода, какой путь будет правильным и почему?

obj:{ filters: myMethod }

ИЛИ

obj:{ filters: myMethod() }

, учитывая, что фильтры ожидают массивфильтров

function myMethod(){
    var filters = [];

    filters.push(new filter("filter1");
    filters.push(new filter("filter2");
    filters.push(new filter("filter3");
    return filters;
}

Ответы [ 4 ]

3 голосов
/ 08 марта 2011

это:

obj:{ filters: myMethod() }

присваивает результат функции, другой:

obj:{ filters: myMethod }

просто назначает функцию для obj, другими словами, у вас будет синоним myMethod:

obj.filters()

Кстати, просто всплывающее окно, это строка:

"obj:{ filters: myMethod() }"

? если да, то вам нужно «вставить» результат myMethod (), в противном случае, когда он является частью кода javascript, например

var a = { obj:{ filters: myMethod() } };

тогда все в порядке. последняя строка может быть зачеркнута, например с использованием jquery , при необходимости

0 голосов
/ 08 марта 2011

В JSON запрещено предоставлять вызовы функций или что-либо еще предназначенное для выполнения (например, объекты, содержащие методы). Он может содержать только скалярные значения, массивы и списки. Вам нужно заставить функцию вызывать имя (аналогично первому примеру, но в виде строки).

obj:{ filters: "myMethod" }

Тогда вам нужно будет вызвать функцию, используя call или apply или что-то подобное.

0 голосов
/ 08 марта 2011

Первый назначит ссылку на ваш метод, а второй назначит результат вашего метода (возвращаемый массив).

Точнее, в первом случае obj.filters () вернеттак же, как obj.filter во втором.

Обратите внимание, что obj.filters () всегда будет вызывать метод, в то время как второй obj.filters является массивом.

0 голосов
/ 08 марта 2011

Оба являются совершенно законными Javascript, первый назначит саму функцию myMethod на filters, а второй оценит функцию и присвоит ее возвращаемое значение filters.

В вашем случае, поскольку вы намерены сериализовать это в JSON, вы, вероятно, захотите вызвать метод (второй).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...