var employee = {
["Last Name"]: "Smith",
["First Name"]: "Josh",
["Full Name"]: function() {
return this["First Name"] + this["Last Name"]
}
};
document.write("Good day" + this["Full Name"])В настоящее время я изучаю JavaScript, и я хотел создать объект со свойствами в двух словах, используя обозначение скобок, к сожалению, это дает мне результат Good dayundefined вместо Good day Josh Smith. Я не знаю, в чем проблема моего кода ...
Вам нужно будет вызвать функцию, чтобы получить желаемый результат. Вы просто пишете саму функцию, а не возвращаемое значение. Так что переходите на document.write("Good day" + employee["Full Name"]()), обратите внимание на дополнительный набор скобок в конце.
Вы используете this вне объектного метода.
Это должен быть employee["Full Name"]().



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Преобразуйте «Полное имя» в добытчик и обращайтесь к employee вместо этого, когда вы его вызываете:
var employee = {
"Last Name": "Smith",
"First Name": "Josh",
get "Full Name"() { // convert to getter
return `${this["First Name"]} ${this["Last Name"]}`;
}
};
document.write("Good day " + employee["Full Name"]) // refer to employee instead of thisМожете ли вы объяснить причину, по которой this["Last Name"] и this["First Name"] заключены в двойную скобку, зная, что без них все работает нормально?
Для получения значения необходимо использовать скобки. Если вы говорите о фигурных скобках - это выражение внутри литерал шаблона.
Две проблемы.
employee["First Name"], а не this["First Name"], поскольку вы не находитесь внутри объектного метода.().var employee = {
["Last Name"]: "Smith",
["First Name"]: "Josh",
["Full Name"]: function() {
return this["First Name"] + this["Last Name"]
}
};
document.write("Good day" + employee["Full Name"]())Большое спасибо! В настоящее время я изучаю JavaScript, и ваши замечания об этих проблемах очень полезны. Спасибо.
var employee = {
"Last Name":"Smith",
"First Name":"Josh",
"Full Name": function() {
return this["First Name"] +" "+ this["Last Name"];
}
};
document.write("Good day " + employee["Full Name"]());