javascript - 适当使用Javascript的bind()

标签 javascript this

我已经了解了 JavaScript 的绑定(bind)方法,但我不确定应该在哪种情况下使用它。下面从一副纸牌(数组)中获取随机纸牌的示例是否被认为是该方法的适当使用:

function getRandomElementFromArray () {
    return this.splice( Math.floor( Math.random() * this.length ) )[0];
}

var deckOfCards = // Array of 52 cards;

var getRandomCard = getRandomElementFromArray.bind(deckOfCards);

最佳答案

我不会说这是一个合适的用途 - 牌组应该简单地作为参数传递。

.bind 最常见的用途是专门附加给定的 this 当它不可能通过其他方式传递时/或创建一个函数的版本,其中初始参数是固定的,然后添加传递的额外参数,例如

对于前者:

function MyObject() {
    this.callback = function() { ... }
}

var myobj = new MyObject();
el.addEventListener("click", myobj.callback.bind(myobj));

[如果没有 .bind 调用,回调将无法正确引用 this]

对于后者:

function add(a, b) { return a + b }
var add2 = add.bind(null, 2);   // no "this" needed in this case
add2(3);                        // returns 5

关于javascript - 适当使用Javascript的bind(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442544/

相关文章:

javascript - 跨存储库共享 react native 组件

javascript - Gulp bower 图像路径

javascript - javascript/css 模拟时钟有一个小问题

javascript - 为什么 Mapbox 给我 'o.createObjectURL is not a function' 错误?

c++ - 使用 "delete this"删除当前对象是否可以?

javascript - "this"不是我想要的

Javascript this 不引用主干模型中的当前对象

javascript - 在 React 中从 Canvas context.getImageData 渲染 ImageData

javascript - 如何将 'this' 绑定(bind)到对象箭头函数?

javascript - 在javascript中更改函数上下文的目的是什么?