2009-02-11 41 views
5

Tôi có một số mã JS mà tạo ra các đối tượng sau đây,Các từ dành riêng cho Javascript?

return { 
    "type": "some thing", 
    "width": 2, 
    "colour": "#AA12BB", 
    "values": [2,3,4] 
} 

Việc tạo ra đây không phải là một vấn đề.

Khi viết bài kiểm tra cho phương thức trả về lỗi này đang gặp sự cố khi truy cập thuộc tính chiều rộng/loại: các xác nhận sau không thành công (dẫn đến lỗi thực thi/cú pháp, biến mất khi tôi nhận xét).

assertEquals('some thing', jsonObj.type); 
assertEquals(2, jsonObj.width); 

khi

assertEquals('#AA12BB', jsonObj.colour); 

đi

Vì tôi không thể thay đổi tên chủ chốt cho những gì tôi đang làm, là có cách nào để truy cập vào các giá trị?

Trả lời

3

Hãy thử điều này:

assertEquals('some thing', jsonObj["type"]); 
assertEquals(2, jsonObj["width"]); 
+0

Chúc vui vẻ! –

0

ký hiệu dấu chấm không hoạt động với các từ dành riêng, chẳng hạn như "loại". Trong trường hợp đó, bạn phải sử dụng ký hiệu mảng.

Danh sách của Mozilla là Java Script Reserved words.

+2

Loại dường như không phải là một từ dành riêng, nhưng đây là cách chính xác để truy cập các thuộc tính đó. – zedd45

3

Ví dụ của bạn hoạt động tốt cho tôi. ‘Width’ và ‘type’ là không phải là các từ dành riêng trong JavaScript (mặc dù ‘typeof’ là).

+0

Weird .. bạn là đúng về họ không được dành riêng từ ... Nhưng vì lý do gì trên FF3.0.6 nó không thành công cho tôi .. CSS? Firebug? Hmm, không chắc chắn –

+2

Lỗi chính xác của bạn là gì? – bobince

Các vấn đề liên quan