Javascript 在对象内部定义的函数不';不返回值吗?
我试图返回对象内部元素的名称。第二个元素是函数Javascript 在对象内部定义的函数不';不返回值吗?,javascript,object,Javascript,Object,我试图返回对象内部元素的名称。第二个元素是函数getBook()。我已经定义了第二个变量get name,它引用了对象内部的函数。我不确定是否可以使用return this.element。如果有人能解释我的代码失败的原因,我将不胜感激。多谢各位 var books = { name: 'Goodnight Moon', getBook() { return this.name; } }; var getName = books.getBoo
getBook()。我已经定义了第二个变量get name,它引用了对象内部的函数。我不确定是否可以使用return this.element。如果有人能解释我的代码失败的原因,我将不胜感激。多谢各位
var books = {
name: 'Goodnight Moon',
getBook() {
return this.name;
}
};
var getName = books.getBook;
console.log(getName());
您需要将其绑定到getName函数表达式。否则,此
的上下文将引用窗口
对象:
var书籍={
名字:'晚安月亮',
getBook(){
返回此.name;
}
};
var getName=books.getBook.bind(books);
log(getName())代码>您需要将其绑定到getName函数表达式。否则,此
的上下文将引用窗口
对象:
var书籍={
名字:'晚安月亮',
getBook(){
返回此.name;
}
};
var getName=books.getBook.bind(books);
log(getName())代码>当然你可以这么做
//相同的对象定义
var书籍={
名字:'晚安月亮',
getBook(){
返回此.name;
}
};
//但呼吁:
books.getBook();
log(books.getBook())代码>当然你可以这么做
//相同的对象定义
var书籍={
名字:'晚安月亮',
getBook(){
返回此.name;
}
};
//但呼吁:
books.getBook();
log(books.getBook())代码>卡尔,谢谢你花时间回复。请你解释一下为什么我们必须使用bind,为什么我的原始代码返回undefined?我更新了我的答案。如果需要进一步解释,请告诉我。@espresso_coffee:将这个视为另一个函数参数。调用方根据调用函数的方式将其设置为某个值。您也可以在调用时手动设置它,如getName.call(books)
,或者如上所示,您可以使用.bind()
创建一个新函数,该函数的值永久绑定为this
的值。Carl,感谢您花时间响应。请你解释一下为什么我们必须使用bind,为什么我的原始代码返回undefined?我更新了我的答案。如果需要进一步解释,请告诉我。@espresso_coffee:将这个视为另一个函数参数。调用方根据调用函数的方式将其设置为某个值。您还可以在调用时手动设置它,如getName.call(books)
,或者如上所示,您可以使用.bind()
创建一个新函数,该函数的值永久绑定为this
的值。