#javascript #bind
Вопрос:
У меня есть функция, привязанная к объекту, как я могу получить доступ к объекту в той же области, что и функция?
let f = function(){};
class A{}
f = f.bind(new A());
// console.log(f.bindedObject)
а как насчет метода?
class B{
constructor(func){
this.func = func;
}
log(){
// console.log(this.func.bindedObject)
}
}
class A{}
let b = new B(function(){}.bind(new A()));
b.log()
Комментарии:
1. Используя
this
ключевое слово?2. Разве ты не можешь просто использовать
this
?3. Кстати, я думаю, что вы не можете повторно привязать функцию стрелки!
4. это не я подразумевал, извините, я отредактирую вопрос
5. вопрос обновлен.
Ответ №1:
Вы можете перезаписать bind
метод
(function() {
let bind = Function.prototype.bind;
Function.prototype.bind = function(newThis) {
let bf = bind.apply(this, arguments);
bf.newThis = newThis;
return bf;
};
})();
var f = function() {};
var nf = f.bind({'hello':1});
console.log('newThis', nf.newThis);
Комментарии:
1. Большое спасибо за предложение, добавить привязанный объект в качестве свойства было бы отличным решением. Однако мне интересно, есть ли для этого общее встроенное свойство.
2. Насколько я знаю, такого встроенного способа нет