首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解MDN的绑定示例

理解MDN的绑定示例
EN

Stack Overflow用户
提问于 2015-04-25 11:47:48
回答 1查看 62关注 0票数 2

嘿,伙计们,我一直在努力学习bind()方法在JS中的作用,我在所以MDNgit中找到了一些有用的资源,它们确实很好地解释了这一点,但是我仍然有点困惑于我在MDN上找到的一个实际例子。下面是我所说的代码:

代码语言:javascript
复制
function LateBloomer() {
  this.petalCount = Math.ceil(Math.random() * 12) + 1;
}

// Declare bloom after a delay of 1 second
LateBloomer.prototype.bloom = function() {
  window.setTimeout(this.declare.bind(this), 1000);
};

LateBloomer.prototype.declare = function() {
  console.log('I am a beautiful flower with ' +
    this.petalCount + ' petals!');
};  

现在,绑定函数就像call()或apply()一样,这是我目前所理解的,但它所做的是,它可以延迟函数的执行,同时保留或者更确切地说,将this的值绑定到特定的函数。

现在在下面的代码行中:

代码语言:javascript
复制
LateBloomer.prototype.bloom = function() {
      window.setTimeout(this.declare.bind(this), 1000);
    }; 

第一个this指向什么?那么分段this指向什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-25 11:54:54

this.declare.bind(this)中,第一个this用于获取当前对象的declare方法。然后,我们使用bind创建一个新函数,该函数将使用特定的this值调用该方法,这是bind()的参数。只是碰巧我们将它绑定到当前对象,所以我们在这两个地方都使用了this,但我们不必这么做。我们可以写:

代码语言:javascript
复制
var another = new LateBloomer;
setTimeout(this.declare.bind(another), 1000);

这将获取当前对象的declare方法,并安排在1秒内在another上调用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29864734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档