2009-09-09 24 views

Trả lời

17

Phím đầu tiên a sẽ bị ghi đè bởi số 'a' thứ hai.

obj.a sẽ trở lại 2.

Nếu tên chìa khóa của bạn là một định danh Javascript hợp lệ hoặc một số, Javascript sẽ cho phép bạn bỏ qua các dấu ngoặc kép trong tên chủ chốt. Tuy nhiên, trong thực tế, có lẽ tốt hơn là bạn nên rèn luyện bản thân để luôn luôn sử dụng dấu ngoặc kép, để tránh nhầm lẫn như thế này, và cũng vì JSON yêu cầu chúng.

1

Không có bất kỳ sự khác biệt nào.

alert([ 
    obj.a, 
    obj['a'] 
].join("\n")); // returns 2 in both cases 
7

Bạn không thể - chúng giống nhau, và trình khởi tạo đó sẽ tạo đối tượng với một phần tử 'a' có giá trị '2'. Hãy thử điều này:

var obj = {a:1,'a':2}; 

for (var i in obj) 
{ 
    alert(i + '=' + obj[i]); 
} 

Và bạn sẽ chỉ nhận được "a = 2' để đáp ứng

2

Nếu bạn không chắc chắn về chính - sử dụng lặp

for(var k in obj) 
    alert(k + "=" + obj[k]) 

Khi bạn biết chính xác giá trị then chốt. sử dụng obj [k]

3

rõ ràng là 'a' là chuỗi một ký tự có chữ thường là nội dung, nhưng bạn mong đợi điều gì là khóa khác? nếu bạn muốn nó là giá trị của biến được gọi là a, sau đó cú pháp dấu ngoặc nhọn sẽ không giúp bạn. Không giống như Python, cú pháp này giả định các khóa là các chuỗi và các dấu ngoặc kép là tùy chọn.

Bạn sẽ phải làm một cái gì đó như thế này:

var a = 'givenkey' 
var obj = {} 
obj[a] = 1 
obj['a'] = 2 

này sẽ tạo ra một đối tượng tương đương với:

var obj = {'givenkey':1, 'a':2} 
Các vấn đề liên quan