1
0
Fork 0

Added documentation for implicit private members

newmaster
Mike Gerwitz 2014-04-20 02:53:02 -04:00
parent d5965f4672
commit a537721ea1
No known key found for this signature in database
GPG Key ID: F22BB8158EE30EAB
1 changed files with 18 additions and 6 deletions

View File

@ -1,5 +1,5 @@
@c This document is part of the GNU ease.js manual. @c This document is part of the GNU ease.js manual.
@c Copyright (C) 2011, 2013, 2014 Free Software Foundation, Inc. @c Copyright (C) 2011, 2013, 2014 Mike Gerwitz
@c Permission is granted to copy, distribute and/or modify this document @c Permission is granted to copy, distribute and/or modify this document
@c under the terms of the GNU Free Documentation License, Version 1.3 or @c under the terms of the GNU Free Documentation License, Version 1.3 or
@c any later version published by the Free Software Foundation; with no @c any later version published by the Free Software Foundation; with no
@ -23,13 +23,15 @@ The table below summarizes the available keywords accepted by
@headitem Keyword @tab Description @headitem Keyword @tab Description
@item @code{public} @item @code{public}
@tab Places member @var{name} into the public API for @var{C} (@pxref{Access @tab Places member @var{name} into the public API for @var{C} (@pxref{Access
Modifiers}). Modifiers}); this is the default visibility.
@item @code{protected} @item @code{protected}
@tab Places member @var{name} into the protected API for @var{C} @tab Places member @var{name} into the protected API for @var{C}
(@pxref{Access Modifiers}). (@pxref{Access Modifiers}).
@item @code{private} @item @code{private}
@tab Places member @var{name} into the private API for @var{C} @tab Places member @var{name} into the private API for @var{C}
(@pxref{Access Modifiers}). (@pxref{Access Modifiers}); this is done implicitly if the member name is
prefixed with an underscore, unless another access modifier is explicitly
provided.
@item @code{static} @item @code{static}
@tab Binds member @var{name} to class @var{C} rather than instance of @tab Binds member @var{name} to class @var{C} rather than instance of
@var{C}. Member data shared with each instance of type @var{C}. @var{C}. Member data shared with each instance of type @var{C}.
@ -97,7 +99,7 @@ Not accessible outside of @var{C} or any instance of @var{C}. @emph{Not}
@tab @tab
Places member @var{name} in public interface (accessible outside of @var{C} Places member @var{name} in public interface (accessible outside of @var{C}
or instance of @var{C}; accessible by subtypes). Implied if no other access or instance of @var{C}; accessible by subtypes). Implied if no other access
modifier is provided. modifier is provided (but see @code{private});
@item @code{protected} @item @code{protected}
@tab @tab
Places member @var{name} in protected interface (accessible only within Places member @var{name} in protected interface (accessible only within
@ -105,7 +107,9 @@ Places member @var{name} in protected interface (accessible only within
@item @code{private} @item @code{private}
@tab @tab
Places member @var{name} in private interface (accessible only within Places member @var{name} in private interface (accessible only within
@var{C} or instance of @var{C}; not accessible by subtypes). @var{C} or instance of @var{C}; not accessible by subtypes); implicit if the
member name is prefixed with an underscore, unless another access modifier
is explicitly provided.
@end multitable @end multitable
@caption{Access modifiers} @caption{Access modifiers}
@end float @end float
@ -118,7 +122,9 @@ Only one access modifier may appear in @var{keywords} for any given
@var{name}. @var{name}.
@item @item
If no access modifier is provided in @var{keywords} for any member If no access modifier is provided in @var{keywords} for any member
@var{name}, member @var{name} is implicitly @code{public}. @var{name}, member @var{name} is implicitly @code{public}, unless the member
name is prefixed with an underscore, in which case it is implicitly
@code{private}.
@end itemize @end itemize
@menu @menu
@ -146,6 +152,12 @@ class. Public properties, however, should be less common in practice for a
very important reason, which is explored throughout the remainder of this very important reason, which is explored throughout the remainder of this
section. section.
Following common conventions in modern object-oriented languages, members
with an underscore prefix (e.g. @code{_foo}) are implicitly private; this
behavior can be overridden by explicitly specifying an access modifier. This
convention allows for more concise member definitions and is more natural to
those who use JavaScript's native prototype model.
@anchor{Encapsulation} @anchor{Encapsulation}
@subsubsection Encapsulation @subsubsection Encapsulation
@dfn{Encapsulation} is the act of hiding information within a class or @dfn{Encapsulation} is the act of hiding information within a class or