объект, привязанный к журналу js

#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. Насколько я знаю, такого встроенного способа нет