对象输出返回NAN

jsc*_*ode 5 javascript object

这是我的代码

const products = 
      [ 
          {

    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto",
    "coefficient":2,
    "price": () => 2000 * this.coefficient
  },
  {

    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla",
    "coefficient":3, 
    "price": () => 2000 * this.coefficient
  },
] 
Run Code Online (Sandbox Code Playgroud)

我想返回价格取决于系数,但是当我执行时

products[0].price() // return NaN
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

谢谢。

Gho*_*med 7

this箭头功能是指类范围,也就是一个空对象; 在这种情况下,您必须使用完整功能语法来引用对象范围。

尝试这个:

products = [
  {
    id: 1,
    title:
      "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    body:
      "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto",
    coefficient: 2,
    price: function() {
      return 2000 * this.coefficient;
    }
  },
  {
    id: 2,
    title: "qui est esse",
    body:
      "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla",
    coff: 3,
    price: function() {
      return 2000 * this.coefficient;
    }
  }
];

console.log(products[0].price()) // 4000
console.log(products[1].price()) // 6000
Run Code Online (Sandbox Code Playgroud)

  • 也许对OP进行一些解释会有所帮助。 (2认同)

Har*_*_OK 6

这是由于箭头功能处理this范围的方式。在这种情况下,将箭头函数(() => this.something)替换为传统的JS函数(function() { return this.something; })将解决您的问题。