Я читал о функциях со стрелками и обнаружил, что их контекст не может быть изменен.
Я создавал модуль, который получает функцию, а затем меняет ее контекст.Но так как пользователь мог вводить функцию стрелки, я не смог этого сделать.
Поэтому мне было интересно, если, поскольку невозможно изменить контекст функции стрелки, я мог бы скопировать ее содержимое и создать новыйфункция, которая делает то же самое, но теперь с управляемым контекстом.
Есть идеи, как этого достичь?
Примером является что-то вроде этого:
class Foo {
constructor(name) {
this.name = name;
}
sayMyName() {
console.log(this.name);
return this.name;
}
}
class Scope {
constructor(reqId) {
this.foo = new Foo('Hi!');
this.reqId = reqId;
}
do(callback) {
const func = callback.bind(this, this);
func();
}
}
class Controller {
constructor() {
this.foo = new Foo('Hello!');
}
unscoped(req, res, next) {
var a = 1;
res.json({
success: this.foo.sayMyName()
});
}
scoped(req, res, next) {
req.scope.do((ctx) => {
var a = 1;
res.json({
success: this.foo.sayMyName()
});
});
}
}
Iхотите this.foo.sayMyName()
вернуть 'hi' в Controller.scoped
и 'hello' в Controller.unscoped