如何在javascript中访问特定对象?

时间:2011-01-21 00:41:35

标签: javascript json object

当涉及到这一点时,我有点像菜鸟。我使用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。在谈到这一点时,我显然是一个菜鸟。我正在尝试做什么?如果是这样,你能指出我正确的方向吗?谢谢!

3 个答案:

答案 0 :(得分:4)

请尝试使用this[productName][tier]。在JavaScript中,点表示法和括号表示法是相同的。也就是说,obj.aobj['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;
}