我不确定为什么我的代码没有运行,有人可以给我一些方向吗? 当我运行此代码并检查控制台时,我收到错误
"未捕获的TypeError :(中间值)(中间值)(中间值)不是函数"
var person = {
firstName: "Jane",
lastName: "Doe",
getFullName: function() {
var fullName = this.firstName + this.lastName;
return fullName;
}
}
(function() {
console.log(this.getFullName());
}).bind(person);
答案 0 :(得分:6)
问题是你错过了分号(;
)。如果在person
声明的末尾没有分号,您的代码就会有效地转换为此。
var person = { firstName: 'Jane', ... }(function() {
console.log(this.getFullName());
}).bind(person);
从语法上讲,您尝试将对象作为函数调用,然后将该函数的结果用作另一个函数。
以下是您更正后的代码:
var person = {
firstName: "Jane",
lastName: "Doe",
getFullName: function() {
var fullName = this.firstName + this.lastName;
return fullName;
}
};
// Isn't called because `bind` returns a new function
(function() {
console.log(this.getFullName());
}).bind(person);
// What you probably want to do
(function() {
console.log(this.getFullName());
}).call(person);

答案 1 :(得分:3)
您可以使用括号输入分号和调用,因为var
语句尚未结束且尝试调用对象person
。
var person = {
firstName: "Jane",
lastName: "Doe",
getFullName: function() {
var fullName = this.firstName + this.lastName;
return fullName;
}
}; // insert semicolon here
(function () {
console.log(this.getFullName());
}).bind(person)(); // add parenthesis