@narem

Почему при вызове функции, js говорит что это не функция?

const views = function(){
			return this.age + this.name;
		},
		passport = {
			age: 13,
			name: 'name'
		},
		passport2 = {
			age: 14,
			name: 'name1'
		};
		console.log(passport.views());

Увидел, что можно так вызывать функцию, но почему-то консоль кричит, что views это не функция. В чем дело?
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@L1nks
А почему у вас должна сработать эта функция?
У вас это обычная функция, а passport и passport2 это 2 объекта у которых нет никаких методов.
Если вы хотите вызвать views с контекстом passport или passport2 ,вам необходимо привязать их контекст к этой функции. Например:
const views = function(){
      return this.age + this.name;
    },
    passport = {
      age: 13,
      name: 'name'
    },
    passport2 = {
      age: 14,
      name: 'name1'
    };
    console.log(views.call(passport));
    console.log(views.call(passport2));

Если вы хотите, чтобы у объектов был данный метод, то можете воспользоваться конструктором
class Passport {
  constructor(age, name) {
    this.age = age;
    this.name = name;
  }
  
  views() {
    return this.age + this.name;
  }
}

const passport1 = new Passport(14, "name1");
const passport2 = new Passport(12, "name2");

console.log(passport1.views())
console.log(passport2.views())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Так как вы пишите не должно работать, все правильно ругается консоль. Почитайте учебник. Learn JavaScript ru
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы