@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 это не функция. В чем дело?
  • Вопрос задан
  • 218 просмотров
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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