在对象内定义的函数不返回值? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我正在尝试返回对象内部元素的名称。第二个元素是函数getBook()应该返回书的名称,但我在我的控制台中得到undefined。我已经定义了第二个变量get name,它引用了对象内部的函数。我不确定我是否可以使用return this.element。如果有人能解释我的代码失败的原因,我将不胜感激。谢谢。

var books = { 
    name: 'Goodnight Moon', 
    getBook() { 
        return this.name; 
    } 
}; 

var getName = books.getBook; 
console.log(getName());
javascript object
2个回答
2
投票

您需要将bind()书籍添加到getName函数表达式中。否则this的上下文将引用window对象:

var books = {
  name: 'Goodnight Moon',
  getBook() {
    return this.name;
  }
};

var getName = books.getBook.bind(books);
console.log(getName());

0
投票

当然你可以做到

// same object definition
var books = { 
    name: 'Goodnight Moon', 
    getBook() { 
        return this.name; 
    } 
};

// but call:
books.getBook();
console.log(books.getBook());
© www.soinside.com 2019 - 2024. All rights reserved.