2016-04-10 23 views
6

Tôi tò mò tại sao một số biến là rắn và một số biến là một nửa độ mờ đục. sự khác biệt giữa chúng là gì? Cả hai biến thể đều có sẵn trong phạm vi toàn cầu.Màu sắc có ý nghĩa gì trong bảng điều khiển Phạm vi công cụ dành cho nhà phát triển Chrome?

screenshot

+1

Tốt câu hỏi . Tôi đã tạo [vấn đề] (https://github.com/google/WebFundamentals/issues/2803) để nhận tài liệu này. –

Trả lời

7

Nếu tài sản được hiển thị mờ đó có nghĩa là nó không đếm được. Vì vậy, nó sẽ không hiển thị trong khi bạn lặp qua các thuộc tính của đối tượng:

Hãy đối tượng vị trí như một ví dụ:

Location logged in console

Khi liệt kê các thuộc tính toString, valueOf__proto__ không hiển thị lên:

var keys = []; for (var key in location) { keys.push(key) }; console.log(keys) 
-> ["replace", "assign", "hash", "search", "pathname", "port", "hostname", "host", 
"protocol", "origin", "href", "ancestorOrigins", "reload"] 

Bạn có thể sử dụng propertyIsEnumerable để tìm ou t nếu tài sản sẽ hiển thị khi bạn vòng qua các đối tượng:

location.propertyIsEnumerable("search") 
// true 
location.propertyIsEnumerable("toString") 
// false 

Theo mặc định tất cả các thuộc tính của một đối tượng là đếm được:

post.title is enumerable

Nhưng bạn có thể thay đổi điều đó bằng cách sử dụng defineProperty:

Object.defineProperty(post, "author", { 
    value: "John Doe", 
    enumerable: false 
}); 

Khi bạn đăng đối tượng đó vào bảng điều khiển, thuộc tính tác giả sẽ xuất hiện trong bóng màu tím nhạt hơn một chút.

(Có vẻ như phiên bản tốc ký không có hỗ trợ cho tính năng định dạng này, nhưng chúng ta có thể buộc DevTools sử dụng phiên bản còn cho một đối tượng nhỏ bằng cách sử dụng chức năng dir.)

author property isn't enumerable

+1

Chi tiết tuyệt vời! Cảm ơn –

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