Vui lòng tham khảo mã bên dưới, khi tôi "nhận xét" một trong các dòng nhận xét, nó gây ra lỗi (trong IE) của "':' được mong đợi". Vì vậy, sau đó là kết luận của tôi đúng, rằng điều này không có khả năng cung cấp một tham chiếu đến một giá trị đối tượng, như là một khóa đối tượng trong một chuỗi chữ; đây có phải là vấn đề thông dịch/phân tích cú pháp nghiêm ngặt không? Đây có phải là một ứng cử viên cho một phần "khủng khiếp" (hoặc ít nhất là "xấu") của Javascript, trái ngược với "phần tốt" của Crockford?Hạn chế khóa chữ của đối tượng Javascript này có phải là do phân tích cú pháp không?
<script>
var keys = {'ONE': 'one'};
//causes error:
//var obj1 = {keys.ONE: 'value1'};
//var obj1 = {keys['ONE']: 'value1'};
//works
var obj1 = {};
obj1[keys.ONE] = 'value1';
//also works
var key_one = keys.ONE;
var obj2 = {key_one: 'value1'};
</script>
BTW 'var key_one = keys.ONE; var obj2 = {key_one: 'value1'}; 'không hoạt động như bạn mong đợi. Thuộc tính 'obj2' sẽ là' key_one' và không phải là giá trị của 'key.ONE' do đó không phải' one'. – RoToRa
Lưu ý rằng mặc dù ví dụ cuối cùng hoạt động, nó tạo một đối tượng với thuộc tính 'key_one', không phải thuộc tính' keys.One'. Biến 'key_one' không liên quan đến đối tượng chữ trong dòng tiếp theo. – Guffa
nhận nó .... có thể gây nhầm lẫn .... nó hoặc là không cho phép tất cả các chuỗi "không được kiểm soát", hoặc không tham khảo các tham chiếu, bất kể chúng có thể là gì –