Tại sao cú pháp sauTại sao tôi không thể truy cập trực tiếp vào một thuộc tính của một đối tượng theo nghĩa đen?
{a:1,b:2}.constructor
là không hợp lệ, trong khi
[1,2].constructor
là hợp lệ?
Tại sao cú pháp sauTại sao tôi không thể truy cập trực tiếp vào một thuộc tính của một đối tượng theo nghĩa đen?
{a:1,b:2}.constructor
là không hợp lệ, trong khi
[1,2].constructor
là hợp lệ?
{a:1,b:2}.constructor
không phải là cú pháp không hợp lệ, nhưng nó không rõ ràng, vì {}
biểu thị một khối hoặc một đối tượng? Vì vậy, bạn phải phân biệt biểu thức với dấu ngoặc đơn, như ({a:1,b:2}).constructor
. Bây giờ JavaScript biết bạn có ý định sử dụng một đối tượng.
Nếu bạn sử dụng cú pháp trong một bối cảnh mà nó rõ ràng là một đối tượng, sau đó không có sự mơ hồ:
console.log({a:1,b:2}.constructor) // works fine
Dấu ngoặc nhọn ở đầu dòng được nhận dạng là code block thay vì object literal.
Nếu bạn nhìn vào lỗi trong bảng điều khiển, bạn có thể xem Uncaught SyntaxError: Unexpected token :
. Vì vậy, lỗi không được gọi là nhà xây dựng constructor.
Ngoài ra, khi bạn viết trong giao diện điều khiển
{a:1}
JS giải thích điều này như một khối với một label và không phải là một đối tượng với tài sản a
.
'({a: 1, b: 2}). Constructor' – elclanrs