Javascript 使用括号调用时,TypeError不是函数
我想知道为什么将括号添加到hero.getSecretIdentity()会导致TypeError,但是如果我直接在我的console.log中引用它,它会正常工作Javascript 使用括号调用时,TypeError不是函数,javascript,typeerror,Javascript,Typeerror,我想知道为什么将括号添加到hero.getSecretIdentity()会导致TypeError,但是如果我直接在我的console.log中引用它,它会正常工作 var hero = { _name: 'John Doe', getSecretIdentity: function (){ return this._name; } }; var stoleSecretIdentity = hero.getSecretIdentity.bind(hero
var hero = {
_name: 'John Doe',
getSecretIdentity: function (){
return this._name;
}
};
var stoleSecretIdentity = hero.getSecretIdentity.bind(hero);
var stoleSecretIdentity = hero.getSecretIdentity()
//TypeError: stoleSecretIdentity is not a function
console.log(stoleSecretIdentity());
//Works without issue
console.log(hero.getSecretIdentity());
您正在这里调用函数
var stoleSecretIdentity = hero.getSecretIdentity(); // braces call the function
所以
不是函数,但设置为函数返回值
如果你想这样写:
var stoleSecretIdentity = hero.getSecretIdentity; // << without braces
您正在这里调用函数
var stoleSecretIdentity = hero.getSecretIdentity(); // braces call the function
所以
不是函数,但设置为函数返回值
如果你想这样写:
var stoleSecretIdentity = hero.getSecretIdentity; // << without braces
您正在这里调用函数
var stoleSecretIdentity = hero.getSecretIdentity(); // braces call the function
所以
不是函数,但设置为函数返回值
如果你想这样写:
var stoleSecretIdentity = hero.getSecretIdentity; // << without braces
您正在这里调用函数
var stoleSecretIdentity = hero.getSecretIdentity(); // braces call the function
所以
不是函数,但设置为函数返回值
如果你想这样写:
var stoleSecretIdentity = hero.getSecretIdentity; // << without braces
好的,我假设调用var stoleSecretIdentity=hero.getSecretIdentity时我会看到未定义的原因是getSecretIdentity被调用到全局上下文中,其中_name不存在,这就是使用bind的原因?您是否有任何理由希望使用.bind(此处)而不是从hero.getSecretIdentity()设置返回变量?在上面的示例中,我想我应该设置返回变量。使用bind,您可以指定此所指的内容,因此,两者都可以工作,尽管在上面的代码中使用它会有点过载,好吧,我假设调用var stolesecretidity=hero.getsecretidity时我会看到未定义的原因是getsecretidity被调用到全局上下文中,而在全局上下文中不存在_name,这就是使用的原因绑定您是否有任何理由希望使用.bind(此处)而不是从hero.getSecretIdentity()设置返回变量?在上面的示例中,我想我应该设置返回变量。使用bind,您可以指定此所指的内容,因此,两者都可以工作,尽管在上面的代码中使用它会有点过载,好吧,我假设调用var stolesecretidity=hero.getsecretidity时我会看到未定义的原因是getsecretidity被调用到全局上下文中,而在全局上下文中不存在_name,这就是使用的原因绑定您是否有任何理由希望使用.bind(此处)而不是从hero.getSecretIdentity()设置返回变量?在上面的示例中,我想我应该设置返回变量。使用bind,您可以指定此所指的内容,因此,两者都可以工作,尽管在上面的代码中使用它会有点过载,好吧,我假设调用var stolesecretidity=hero.getsecretidity时我会看到未定义的原因是getsecretidity被调用到全局上下文中,而在全局上下文中不存在_name,这就是使用的原因绑定您是否有任何理由希望使用.bind(此处)而不是从hero.getSecretIdentity()设置返回变量?在上面的示例中,我想我应该设置返回变量。使用bind,您可以指定此所指的内容,因此两者都可以工作,尽管在上面的代码中使用它有点过载