@lowsentmy

Почему не работает код?

var speak = function () {
	console.log(this.sound + "! Меня зовут " + this.name + "!")
}

var cat = {}
cat.sound = "Мяу"
cat.name = "Мурзик"
cat.age = 3

cat.speak()

При запуске возникает ошибка Uncaught TypeError: cat.speak is not a function.
Не понимаю в чем ошибка.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 2
hzzzzl
@hzzzzl
var speak = function () {
  console.log(this.sound + "! Меня зовут " + this.name + "!")
}

var cat = {}
cat.sound = "Мяу"
cat.name = "Мурзик"
cat.age = 3

cat.speak()
// cat.speak и остается необъявленным undefined

.....
cat.speak = speak
cat.speak()


еще можно присоединить speak() к прототипу Объекта, и тогда можно будет заставить говорить любой объект
Object.prototype.speak = speak

dog = {sound: 'gav', name: 'Psina'}
dog.speak()
Ответ написан
IonDen
@IonDen
JavaScript developer. IonDen.com
Именно вот этот вот вопрос решается в ООП стиле очень просто, изучайте: https://learn.javascript.ru/constructor-new

В вашем случае лучше так:
class Cat {
  constructor(name, sound, age) {
    this.name = name;
    this.sound = sound;
    this.age = age;
  }
  speak() {
    console.log(`${this.sound}! Меня зовут ${this.name}!`);
  }
}

const murzik = new Cat('Мурзик', 'мяу', 3);
murzik.speak();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы