название может быть неясным, поэтому вот пример того, чего я пытаюсь достичь:
const myObj = {
propA: 'foo',
propFunc: (arg) => arg + this.propA
}
По сути, одним из свойств моего объекта является функция, и я хочу, чтобы эта функция имела доступ к другим свойствам объекта.
Я хочу сделать это так, чтобы я мог динамически изменять значение или propA
и иметь propFunc
доступ к новому значению после вызова.
Итак, я могу определять новые переменные следующим образом, просто переопределяя propA
и не переопределяя propFunc
:
const myObj2 = {...myObj, propA: 'bar' };
Как и ожидалось, компилятор недоволен моим использованием этого.
Можно ли это сделать или нет? Спасибо
Стрелочные функции не имеют собственного контекста this
, они наследуют значение this
из окружающей области.
Вы можете попробовать это:
const myObj = {
propA: 'foo',
propFunc: function(arg) {
return arg + this.propA;
}
}
or the shorthand :
const myObj = {
propA: 'foo',
propFunc(arg) {
return arg + this.propA;
}
}
console.info(myObj.propFunc('hello')); // Output: "hellofoo"
const myObj2 = {...myObj, propA: 'bar' };
console.info(myObj2.propFunc('hello')); // Output: "hellobar"
Я знаю, что стрелочные функции не имеют к этому доступа, и я знал, что в этом проблема, но почему-то мой мозг не подумал об использовании синтаксиса функции, сегодня пятница. Кажется, сокращение
propA(arg) {return arg + this.propA;}
тоже работает. Спасибо