这是我的代码
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
},
]
我想返回价格取决于系数,但是当我执行时
products[0].price() // return NaN
我该如何解决?
谢谢。
答案 0 :(得分:6)
尝试一下:
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
答案 1 :(得分:5)
这是由于箭头功能处理var result = await query_promise('SELECT Link FROM Link_Foto where ID_Utente="' + utente + '"');
范围的方式。在这种情况下,将箭头功能(this
)替换为传统的JS功能(() => this.something
)将解决您的问题。
答案 2 :(得分:3)
对于箭头函数,this
的值不基于执行该函数所使用的对象引用。而是使用声明所在的闭包中的this
引用。选中the documentation here on MDN。在您的情况下,this.coefficient
是不确定的,将其与2000
相乘将得到NaN
。
如果需要this
引用调用了price
函数的对象引用,则可以将箭头函数更改为适当的函数。更改后的代码应如下所示:
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; }
}
];
答案 3 :(得分:0)
您可以使用此:
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() {
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",
"coefficient": 3,
price() {
return 2000 * this.coefficient
}
},
]