gpt4 book ai didi

javascript - 如何绑定(bind)到以函数为参数的函数

转载 作者:行者123 更新时间:2023-11-30 08:23:59 25 4
gpt4 key购买 nike

我有以下内容我想将一个参数从更高的上下文传递给 eachlayer 方法,即 onDeselectionStyle。

clearAll: function(){
this.map.eachLayer(function(layer){
if(layer.options.clicked == true){
layer.options.clicked == false;
layer.setStyle(this.onDeselectionStyle);
}
})
}

我知道我需要将 this 绑定(bind)到函数,但我不知道如何以这种格式进行绑定(bind)。谢谢

最佳答案

选项 1

您可以在函数声明中使用原型(prototype)绑定(bind)方法:

clearAll: function () {
this.map.eachLayer(function (layer) {
if (layer.options.clicked == true) {
layer.options.clicked == false;
layer.setStyle(this.onDeselectionStyle);
}
}.bind(this))
}

选项 2

如果您使用的是 ES6,则可以使用将使用父作用域的箭头函数:

clearAll: function () {
this.map.eachLayer(layer => {
if (layer.options.clicked == true) {
layer.options.clicked == false;
layer.setStyle(this.onDeselectionStyle);
}
})
}

选项 3

这与绑定(bind)上下文并没有太大关系,但您可以将范围存储在一个可访问的变量中,您以后可以使用:

clearAll: function () {
var that = this;
this.map.eachLayer(function(layer) {
if (layer.options.clicked == true) {
layer.options.clicked == false;
layer.setStyle(that.onDeselectionStyle);
}
})
}

关于javascript - 如何绑定(bind)到以函数为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com