我了解到,如果我想从此示例中提取方法。

var jane={
name:'jane',
describe:function(){
  return 'Person named '+this.name;
    }
};


我不能做以下事情。

var func =jane.describe;
func();


由于它不起作用,为什么这不起作用?还告诉我解决方法如下

var func =jane.describe.bind(jane);
func();


我不明白,函数的“绑定”属性是什么,为什么将“ jane”传递给bind属性?

最佳答案

这不会起作用,因为this的上下文已更改。使用bind时,将对象jane传递给bind,因此当您调用describe并使用this时,它将引用jane

根据文档:


  bind()方法创建一个新函数,该函数在被调用时将其关键字设置为提供的值,并在调用新函数时提供给定的参数序列。


阅读材料

bind

09-28 08:26