我了解到,如果我想从此示例中提取方法。
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