在对象内定义的函数不返回值?

时间:2017-12-18 23:10:01

标签: javascript object

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

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

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

2 个答案:

答案 0 :(得分:2)

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



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

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




答案 1 :(得分:0)

当然你可以做到



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

// but call:
books.getBook();
console.log(books.getBook());