Ваш код хорошо. Вызов dumb
должен быть:
Obj.dumb(); // "Johnny"
this
в JavaScript определяется исключительно как функция называется не там, где функция определена. Если вы вызываете функцию через свойство объекта, в вызове this
будет ссылаться на объект. Так, например, если вы сделали это:
var f = Obj.dumb;
f(); // "undefined"
... тогда вы получите undefined
(ну, наверное), потому что вы не установили какой-либо конкретное значение для this
. В отсутствии определенного значения используется глобальный объект. (. window
, на браузерах)
Вы также можете установить this
с помощью call
или apply
особенности функций JavaScript:
var f = Obj.dumb;
f.call(Obj); // "Johnny"
Первый аргумент в call
(и apply
) является объектом для использования в качестве this
. (С call
, любые последующие аргументы передаются функции, поэтому f.call(Obj, 1);
будет фактически Obj.dumb(1);
. С apply
, второй аргумент является массив, чтобы использовать в качестве аргументов для функции, поэтому f.apply(Obj, [1]);
будет фактически Obj.dumb(1);
.)
Больше чтение:
JSON это формат данных, который является подмножеством JS литерал объекта синтаксис. Это не то, что у вас есть (среди многих других, оно не поддерживает функции) – Quentin
Но это работает: http://jsfiddle.net/damirR/aF63T/ – DamirR
Как вы это называете? 'Obj.dumb()' предупреждает 'Джонни' для меня. – Gumbo