Ваш первый пример работает, значение this
внутри функции helloWorld
будет ссылаться на сам объект myCode
, потому что вы вызвали его с помощью myCode.helloWorld();
Когда вы вызываете функцию, которая является членом объекта, этот объект будет установлен как this
значение функции.
В этом случае myCode
является базовым объектом из ссылки myCode.helloWorld
.
Есть еще два случая, когда ключевое слово this
неявно неявно , например, когда вы вызываете функцию, которая не связана как свойство какого-либо объекта, т. Е .:
myFunc();
Значение this
внутри myFunc
будет указывать на глобальный объект.
При использовании оператора new
:
var obj = new MyFunc();
Значение this
внутри MyFunc
будет ссылаться на вновь созданный объект.
И вы можете установить this
значение функции явно, используя call
или apply
:
function test () {
return this + " World";
}
test.call("Hello"); // "Hello World"
Просто примечание, это не JSON , JSON - это просто формат обмена данными, его грамматика отличается от синтаксиса JavaScript Object Literal , например:
{ foo: "bar" }
Выше приведен допустимый литерал объекта JavaScript, но он не является допустимым JSON, JSON требует, чтобы идентификаторы свойств были заключены в кавычки, и он имеет ограниченный набор разрешенных типов данных, например, у вас не может быть функций как члены объекта JSON.