【问题标题】:JavaScript: How to create object property name and value from variablesJavaScript:如何从变量创建对象属性名称和值
【发布时间】:2013-12-02 20:18:01
【问题描述】:

我正在开发选择收集应用程序,但我一直在处理对象: 用户有卡片列表,每张卡片都有选项列表,每个选项都有 ID 和价格。我想在每张卡上收集用户选择,然后计算最终价格。我不知道卡片的确切名称,它们将被生成。我只知道所选卡片的类别或卡片列表计数。

数据收集:

var datacollection = {
    shape: {
        itemId: 1,
        price: 10
    },
    countmoney: function () {
        var cash = 0;
        $.each(this, function (id, item) {
            if (typeof (item) != 'function') {
                cash += item.price;
            }
        });
        return cash + ' $';
    }
};

从 .click(function() {

收集的数据
var cardClass = 'color';
var choiceId = 2;
var choicePrice = 50;

我可以插入新数据,但前提是我知道卡的名称

datacollection.color = {
    itemId: choiceId,
    price: choicePrice
};

但是如果我不知道卡片的可能名称怎么办?使用括号表示法应该是要走的路..但它不起作用。

cardClassTwo = 'material';

datacollection[cardClassTwo]['itemId'] = choiceId;
datacollection[cardClassTwo]['price'] = choicePrice;
// Uncaught TypeError: Cannot set property 'itemId' of undefined

console.log(datacollection.countmoney());

要玩的代码:http://jsfiddle.net/F5pt6/

【问题讨论】:

  • 不应该 $.each(this, function (id, item) {$.each(datacollection, function (id, item) { 作为 this 在那个范围内,将相当于 window
  • @RoryPicko92 不是它的调用方式。 datacollection.countmoney() 将其称为对象的成员。
  • datacollection[cardClass] = {
  • @Mathletics 哦,是的,当然!!

标签: javascript object properties


【解决方案1】:

将您的datacollection['material'] 初始化为一个对象,就像您之前所做的那样。

另外,正确引用值(如果它们在您之前的对象中):

datacollection[cardClassTwo] = {
   itemId: datacollection.color.itemId,
   price: datacollection.color.price
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2011-03-10
    • 2023-03-04
    相关资源
    最近更新 更多