JS / TS必须使用bind但仍然需要原创

时间:2017-05-10 20:57:12

标签: javascript angular typescript closures bind

我不确定如何解决我遇到的这种用户交互问题。 API为3DMol

我正在尝试访问

中的this个元素
model.setClickable({chain: theChain, resi: mappedPosition}, true, function(){
    console.log(this);
});

首先,对于上面的原始实现,this将是用户点击的位置。但是,我还需要将点击的位置与来自外部调用对象的某些值相结合。

我尝试了.bind(null,this)但函数this中的null设置为const clickClosure = function(){ const mutations = self.alignment.mutations; function clicker(){ console.log(this); console.log(mutations); } return clicker(); } model.setClickable({chain: theChain, resi: mappedPosition}, true,clickClosure);

我尝试了一个闭包

this

发现存在突变,但未定义$ awk '1;sub(/CODE_TYPE.*/,"USER_CODE \"DEFAULT\"")' file MY_TABLE_1 MY_CODE "OFF" MY_TABLE_1 YOUR_CODE "ON" MY_TABLE_1 CODE_TYPE "<NONE>" MY_TABLE_1 USER_CODE "DEFAULT" MY_TABLE_1 CODE_STATE "ON" MY_TABLE_2 MY_CODE "IGNORE" MY_TABLE_2 YOUR_CODE "IGNORE" MY_TABLE_2 CODE_TYPE "FLAGGED" MY_TABLE_2 USER_CODE "DEFAULT" MY_TABLE_2 CODE_STATE "ON" 。知道如何在不使用全局变量的情况下获得两者吗?

1 个答案:

答案 0 :(得分:1)

使用lambda函数传递词法this

model.setClickable({chain: theChain, resi: mappedPosition}, true, (stuff) => {
    console.log(this, stuff); // no `this` binding to the function
});

这应该使this与调用者绑定,并且它实际上是从这样的回调中获取该引用的唯一方法。