Tôi biết rằng bạn có thể lấy đối tượng mô tả thuộc tính của một thuộc tính nhất định 'prop
' của một đối tượng nhất định obj
với Object.getOwnPropertyDescriptor(obj,"prop");
. Tôi đã tự hỏi: Các đối tượng này được lưu trữ ở đâu? Chúng được lưu trữ bên trong trong một đối tượng hoặc .... ở nơi khác? Tôi đã cố gắng tìm chúng trong các công cụ phát triển nhưng không có may mắn.Các đối tượng mô tả thuộc tính được lưu trữ ở đâu?
Trả lời
Đối tượng mô tả thuộc tính không tồn tại trừ khi được yêu cầu một cách rõ ràng. Chúng được tạo ra đặc biệt khi bạn call Object.getOwnPropertyDescriptor
. Vì vậy, mã sau:
var foo = {bar:'foo'}
Object.getOwnPropertyDescriptor(foo, 'bar') === Object.getOwnPropertyDescriptor(foo, 'bar');
Luôn đánh giá sai.
Vì vậy, như chúng ta thấy (cả mã và đặc tả), đối tượng mô tả thuộc tính không được lưu trữ, nhưng được tạo theo yêu cầu.
Vậy đâu là writable
, configurable
, value
, get
, set
... atributtes được lưu trữ? Đặc điểm kỹ thuật không yêu cầu chúng được tiếp xúc với mã người dùng ... Here is C++ definition for V8 PropertyDescriptor class - có vẻ như mọi tài sản chiếm một byte.
Và nếu bạn muốn kiểm tra xem tài sản là có thể ghi, cấu hình hoặc tương tự, Firefox giao diện điều khiển cho phép bạn làm như vậy (nhưng chỉ khi tài sản là không ghi được hoặc có getter/setter):
Nhưng không * đối tượng nào * - khi so sánh với một đối tượng khác - trả về false? Ví dụ '[1,2,3] == [1,2,3]' cũng là 'false' – Danield
Đối tượng được so sánh bằng tham chiếu (" nó ** cùng một đối tượng ** "), không phải theo giá trị (" nó ** đối tượng ** giống hệt nhau "). Ví dụ. 'var a = {}, b = a; a === b; // true' – Ginden
vâng, bạn nói đúng :) – Danield
- 1. các thuộc tính mở rộng được lưu trữ ở đâu?
- 2. Đối tượng trả về được lưu trữ ở đâu?
- 3. Đối tượng tạm thời được lưu trữ ở đâu?
- 4. Các chức năng thành viên được lưu trữ cho một đối tượng ở đâu?
- 5. Các chức năng của đối tượng được lưu trữ trong bộ nhớ ở đâu?
- 6. Vars được lưu trữ ở đâu trong Nodej?
- 7. Các lớp java được lưu trữ trong Oracle ở đâu?
- 8. plugin maven được lưu trữ ở đâu
- 9. ".NET Storage" được lưu trữ ở đâu?
- 10. Các mô-đun python được lưu ở đâu?
- 11. Android Studio được lưu trữ ở đâu?
- 12. ViewState được lưu trữ ở đâu?
- 13. TempData được lưu trữ ở đâu?
- 14. Nội dung thư hàng đợi được lưu trữ ở đâu?
- 15. Các tệp evtx được lưu trữ ở đâu được lưu trữ?
- 16. Các giao dịch mua InAPP được lưu trữ ở đâu?
- 17. Các biến trong Python được lưu trữ ở đâu?
- 18. Các khối CMS tĩnh Magento được lưu trữ ở đâu?
- 19. Bạn lưu trữ/tạo mô hình trong Angular ở đâu?
- 20. Tên thuộc tính trên các đối tượng được lưu trữ trong Javascript như thế nào?
- 21. Kho lưu trữ EclipseLink/Maven ở đâu?
- 22. TÙY CHỌN THIẾT LẬP .... chúng được lưu trữ ở đâu
- 23. Các gói SSIS được lưu ở đâu?
- 24. Hình ảnh giả lập Android được lưu trữ ở đâu?
- 25. Mật khẩu khóa tên mạnh được lưu trữ ở đâu?
- 26. Giá trị được lưu trữ trong C++ ở đâu?
- 27. Có mô tả về các biểu tượng tháo rời IL có sẵn ở đâu đó
- 28. Lưu trữ tệp nhật ký lưu trữ ở đâu?
- 29. Các loại chung được lưu trữ trong các tệp lớp java ở đâu?
- 30. Dữ liệu đặt hàng Magento được lưu trữ ở đâu?
Từ đọc sách của tôi của spec, gọi hàm này [kết thúc tại đây] (http://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty), nơi nó xây dựng sự trở lại từ một loạt các 'khác nhau [ [thuộc tính nội bộ]] '. Các thuộc tính đó không _have_ để được tiếp xúc với thời gian chạy kết thúc, nhưng một số triển khai có thể làm cho chúng có sẵn, ví dụ như trong các công cụ dev. Milage của bạn có thể khác nhau ... –
Chúng được lưu trữ ở bất kỳ nơi nào triển khai cụ thể nào để lưu trữ chúng hoặc có nhiều khả năng hơn, chúng được tạo khi được yêu cầu. –