2012-01-22 44 views
6

Đây là những gì tôi đang cố gắng xây dựng thông qua JavaScript trong dấu chấm hoặc [] ký hiệu:Gán giá trị cho JSON đối tượng trong Javascript

var shoppingCart = { 
     'item1' : { 
      'description' : 'This is item #1', 
      'price' : 10, 
      'quantity' : 1, 
      'shipping' : 0, 
      'total' : 10 
     } 
    }; 

Bây giờ nếu 'item1' là biến tên itemName.

này hoạt động:
var shoppingCart = {};
shoppingCart[itemName] = itemName;
alert(shoppingCart.item1);

nào trả item1

Nhưng điều này không làm việc:
1 var shoppingCart = {};
2 shoppingCart[itemName]['description'] = 'This is Item #1';

JS chỉ chết ở dòng 2, tại sao? và làm cách nào để gán giá trị mô tả cho 'mô tả'?

tôi sẽ làm điều đó như thế này:

var shoppingCart = { 
     itemName : { 
      'description' : description, 
      'price' : price, 
      'quantity' : quantity, 
      'shipping' : shipping, 
      'total' : total 
     } 
    }; 

... nhưng nó làm cho chính nghĩa itemName thay vì item1.

Trả lời

10

shoppingCart[itemName] không tồn tại.
Bạn cần phải tạo ra nó đầu tiên:

var shoppingCart = {}; 
shoppingCart[itemName] = { }; 
shoppingCart[itemName].description = 'This is Item #1'; 

Hoặc, tốt hơn được nêu ra:

var shoppingCart = {}; 
shoppingCart[itemName] = { description: 'This is Item #1' }; 
+0

cảm ơn phản hồi nhanh – phpKid

+1

Ngoài ra 'shoppingCart [itemName] ['description']' tương đương với 'shoppingCart [itemName] .description'. Bạn chỉ cần truy cập các thuộc tính với '[]' khi truy cập chúng một cách động 'obj [propNameString]' hoặc khi nó chứa các ký tự không hợp lệ cho dấu chấm notaton 'obj ['some-prop-name']' –

+0

Có thnx, đó là những gì tôi đọc ở khắp mọi nơi, nhưng điều quan trọng là 'shoppingCart [itemName] = {};' Tôi hiểu các đối tượng ngày càng nhiều hơn mỗi ngày! – phpKid

1

Nó không làm việc bởi vì, trong ví dụ thứ hai của bạn, bạn đang cố gắng index một đối tượng trống với một khóa chưa được đặt. Sau đây sẽ hoạt động ...

var shoppingCart = {}; 
shoppingCart[itemName] = {}; 
shoppingCart[itemName]['description'] = '...'; 

Vì bây giờ shoppingCart [itemName] thực sự là một đối tượng.

+0

thnx cho phản hồi nhanh chóng – phpKid

2

Trong đối tượng javascript không tự động tạo khi truy cập thành viên; bạn phải tạo các đối tượng đầu tiên:

var shoppingCart = {}; 
shoppingCart["item1"] = {}; // This creates the object 
shoppingCart["item1"]["description"] = "This is item #1"; // add a member 

Lưu ý bạn có thể tất nhiên cũng tạo ra toàn bộ đối tượng cùng một lúc với

shoppingCart[itemname] = { "description": description, 
          "price": price, 
          "quantity": quantity, 
          "shipping": shipping, 
          "total": total }; 
+0

vâng, được thôi thnx, tôi thấy cách hoạt động của obj bây giờ – phpKid

0

Just FYI, giải pháp thay thế:

var itemName = {}; 
itemName.description = 'This is Item #1'; 
var shoppingCart = {}; 
shoppingCart.itemName = itemName; 

hoặc chỉ

var shoppingCart = {}; 
shoppingCart.itemName = { description: 'This is Item #1' }; 
Các vấn đề liên quan