(javascript)这段代码似乎有两个问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(javascript)这段代码似乎有两个问题相关的知识,希望对你有一定的参考价值。

我是否需要在某处执行绑定(此)并且控制台日志位置似乎已关闭?

var company = {
  employees: [{
      name: "doug"
    },
    {
      name: "AJ"
    }
  ],
  getName: function(employee) {
    return employee.name
  },
  getNames: function() {
    return this.employees.map(this.getName)
  },
  delayedGetNames: function() {
    setTimeout(this.getNames, 500)
  }
}

console.log(company.delayedGetNames());
答案
setTimeout(this.getNames.bind(this), 500)
                         ^
                         |
                         +----< HERE

var company = {
  employees: [{
      name: "doug"
    },
    {
      name: "AJ"
    }
  ],
  getName: function(employee) {
    return employee.name
  },
  getNames: function() {
    return this.employees.map(this.getName)
  },
  delayedGetNames: function() {
    var fn = function() {
      var names = this.getNames();
      console.log(names);
    };
    
    setTimeout(fn.bind(this), 500);
  }
}

company.delayedGetNames();

以上是关于(javascript)这段代码似乎有两个问题的主要内容,如果未能解决你的问题,请参考以下文章

有没有更好的方法让这段代码线程安全? Thread_local static 似乎是一个生硬的工具

这段代码似乎没有按顺序触发?

有人能告诉我为啥这段代码似乎可以工作,但不能……拜托?

即使没有进入无限循环,这段代码似乎也永远无法解决

长轮询如何工作 javascript?

为啥这段代码没有将数据插入数据库?