Методы объектов в JavaScript с использованием скобок

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. Я не знаю, в чем проблема моего кода ...

stackoverflow.com/questions/3127429/…
Barmar 31.03.2018 02:03

Вам нужно будет вызвать функцию, чтобы получить желаемый результат. Вы просто пишете саму функцию, а не возвращаемое значение. Так что переходите на document.write("Good day" + employee["Full Name"]()), обратите внимание на дополнительный набор скобок в конце.

CRice 31.03.2018 02:03

Вы используете this вне объектного метода.

Barmar 31.03.2018 02:03

Это должен быть employee["Full Name"]().

Barmar 31.03.2018 02:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
277
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Преобразуйте «Полное имя» в добытчик и обращайтесь к 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"] заключены в двойную скобку, зная, что без них все работает нормально?

Abslen Char 31.03.2018 02:08

Для получения значения необходимо использовать скобки. Если вы говорите о фигурных скобках - это выражение внутри литерал шаблона.

Ori Drori 31.03.2018 02:10

Две проблемы.

  1. Вам нужно использовать employee["First Name"], а не this["First Name"], поскольку вы не находитесь внутри объектного метода.
  2. Вам нужно вызвать функцию с помощью ().

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, и ваши замечания об этих проблемах очень полезны. Спасибо.

Jake Go 31.03.2018 02:18

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"]());

Другие вопросы по теме