It seems to me that there are two different use cases for privacy:

Use case 1: Hide some properties from the outside (when listing properties or 
getting expansion help from an IDE). Many people use a naming convention here 
(e.g. a prefixed underscore). This hiding does not have to be completely safe. 
There could be methods that list all property keys, even hidden ones. Hiding is 
more like a hint (“you don’t normally need to look at this”) than actual 
protection.

Use case 2: Keep data completely safe inside an object.

#1 is very similar to the [[Enumerable]] attribute (if it was used slightly 
differently and more consistently). Symbols already almost serve this use case, 
because they are hidden from current ways of listing property keys. But you 
don’t want to hide some of the public symbols such as @@create. Hence, all that 
would be needed would be a flag, as a hint for IDEs and functions that list 
property keys.

#2 could be handled via WeakMap.

Do I see this correctly?

-- 
Dr. Axel Rauschmayer
[email protected]

home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to