Javascript 如何在匿名函数上使用bind函数

Javascript 如何在匿名函数上使用bind函数,javascript,Javascript,我不知道为什么我的代码没有运行,有人能给我一些指导吗? 当我运行这段代码并检查控制台时,我得到了错误 “未捕获类型错误:(中间值)(中间值)(中间值)不是函数” 问题是缺少分号(;)。如果在person声明末尾没有分号,代码将有效地转换为此 var person = { firstName: 'Jane', ... }(function() { console.log(this.getFullName()); }).bind(person); 在语法上,您试图将一个对象作为函数调用,然后将

我不知道为什么我的代码没有运行,有人能给我一些指导吗? 当我运行这段代码并检查控制台时,我得到了错误

“未捕获类型错误:(中间值)(中间值)(中间值)不是函数”


问题是缺少分号(
)。如果在
person
声明末尾没有分号,代码将有效地转换为此

var person = { firstName: 'Jane', ... }(function() {
  console.log(this.getFullName());
}).bind(person);
在语法上,您试图将一个对象作为函数调用,然后将该函数的结果作为另一个函数使用

以下是您更正的代码:

var-person={
名字:“简”,
姓:“Doe”,
getFullName:函数(){
var fullName=this.firstName+this.lastName;
返回全名;
}
};
//未调用,因为'bind'返回一个新函数
(功能(){
log(this.getFullName());
}).约束(人);
//你可能想做什么
(功能(){
log(this.getFullName());

}).致电(人)
您可以插入分号和带括号的调用,因为
var
语句尚未结束,并且试图调用对象
person

var-person={
名字:“简”,
姓:“Doe”,
getFullName:函数(){
var fullName=this.firstName+this.lastName;
返回全名;
}
}; // 在此处插入分号
(功能(){
log(this.getFullName());

})绑定(人)(;/)添加括号
请记住,
.bind(person)
不调用函数,而是返回一个新函数。添加
(function(){…}).bind(person)(
)并在chrome developer tools控制台中运行您的代码会按预期打印名称…@forrert我收到相同的错误。
var person = { firstName: 'Jane', ... }(function() {
  console.log(this.getFullName());
}).bind(person);