Работа this при передачи функции в объект

297
20 марта 2017, 09:47

Добрый день, возникла трудность в понимании передачи функции в объект, когда функция использует this.

var user={ 
  name: 'Example', 
  last_name: 'Hm...', 
  fullname: sum() 
}; 
   
function sum(){ 
    return this.name + ' ' + this.last_name;  
  } 
   
console.log(user.fullname); //Window undefined

Как изменить код, чтобы обратиться не к глобальному объекту а к объекту - user? Почему вообще срабатывает этот механизм

Answer 1

var user={ 
  name: 'Example', 
  last_name: 'Hm...', 
  fullname: sum 
}; 
   
function sum(){ 
    return this.name + ' ' + this.last_name;  
} 
   
console.log(user.fullname());

Как я понимаю тут: fullname: sum() вы вызываете функцию, которая как раз вне контекста объекта. А если написать fullname: sum, то будете ссылаться на функцию и в определенный нужный момент вы уже её вызываете через user.fullname() - где fullname как раз лежит в user, а значит там уже this доступен.

READ ALSO
Сумма ячеек таблицы JavaScript

Сумма ячеек таблицы JavaScript

Добрый день, есть вопрос, вот к примеру у меня есть таблица в HTML 4х4 с числовыми данными, и мне нужно на чистом JavaScript реализовать функцию, которая...

407
Где и в чем ошибка?

Где и в чем ошибка?

Такая штука пишу я код, запускаю, а то что мне не надо не выводит только ошибку в консоли и я даже не могу понять в чем ошибкаИ такой еще вопрос...

260
Обойти все id с getElementById

Обойти все id с getElementById

Как и должно быть в js он увидел только первый conteiner_topКак правильно обработать все? С getElementsByClassName как то не заладилось у нас

210
Передача переменных из PHP в Javascript

Передача переменных из PHP в Javascript

Добрый деньПытаюсь сделать, чтобы "сайт" работал не со своими данными, а обращался к базе за ними

278