当涉及到这一点时,我有点像菜鸟。我使用JSON来定义一个名为product
的类/对象,我不知道如何传递参数来访问该对象的某个部分。请原谅我无法更好地解释它。希望我的代码示例能够提供帮助:
var product = {
p14lb: {
one: 10.00,
two: 20.00,
three: 30.00,
four: 40.00,
five: 50.00,
six: 60.00,
colorCharge: 2.00
},
p20lb: {
one: 20.00,
two: 30.00,
three: 40.00,
four: 50.00,
five: 60.00,
six: 70.00,
colorCharge: 1.00
},
getPrice: function (productQty,colorQty) {
// I can get the values like this
return this.p20lb.one * productQty;
// but i'd like to be able to pass in the value of what object I want to access
// so instead of hard coding p20lb.one, 'p20lb' would be an argument I could pass
// to getPrice, and 'one' would also be an argument
}
};
这就是我目前访问它的方式,效果很好。
var myProduct = product.getPrice(144,2);
正如我在上面的代码示例中的评论中所说,我想不硬代码p20lb.one,'p20lb'将是我可以传递给getPrice的参数,并且'one '也是一个争论。也许是这样的:
getPrice: function (productQty,colorQty,productName,tier) {
return this.productName.tier * productQty;
}
var myProduct = product.getPrice(144,2,'14lb','two');
但事实并非如此,无论我做什么,我都会undefined
。在谈到这一点时,我显然是一个菜鸟。我正在尝试做什么?如果是这样,你能指出我正确的方向吗?谢谢!
答案 0 :(得分:4)
请尝试使用this[productName][tier]
。在JavaScript中,点表示法和括号表示法是相同的。也就是说,obj.a
与obj['a']
相同。
答案 1 :(得分:1)
简单。
getPrice: function (productQty,colorQty,productName,tier) {
return this[productName][tier] * productQty;
}
可以使用数组表示法访问对象。不要忘记将其包装在try-catch块中以处理不存在某个键组合的情况。
答案 2 :(得分:0)
你能做到:
var colorQty = product.p20lb.one;
var myProduct = product.getPrice(144, colorQty);
getPrice: function (productQty, colorQty) {
return productQty * colorQty;
}