Javascript это ключевое слово, назначая контекстную функцию для вызова переменной

1

Почему не работает последняя строка этого кода? Как я могу заставить его работать без изменения Thing или obj? Как назначить функцию с привязкой к контексту, вызывающую "obj.getName" переменной "f" (то есть выражение "f()" приведет к вызову "obj.getName").

class Thing{
  constructor(name) {this._name = name;}
  getName() { return this._name;}
}

const obj = new Thing('a');
const f = obj.getName;
const name = f();
Теги:

1 ответ

0

Это просто объясняет, почему это не работает, решение уже находится в комментариях.

Почему последняя строка этого кода не работает

пусть сломает его, чтобы понять его более четко.

В этой строке

const f = obj.getName;

Вы копируете определение функции getName и устанавливаете его в f.

f теперь является нормальной функцией, подобной любой, которую вы бы определили.

let f = function getName() {
  return this._name;
}

Теперь, если бы вы это назвали, разве this не было бы неопределенным?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню