我从Crockford网站上读到了这个:private Javascript variables
但我对他的术语感到困惑:
他说:
对象的成员都是 公众成员`this.membername = 值;
后:
无法访问私有变量 到外面,也不是 对象自己的公众可以访问 方法
然后:
特权方法可以访问 私有变量和方法,以及 本身可以向公众开放 方法和外部
所以似乎特权方法与公共方法不同,但如果我这样做:
function S()
{
var a = 11; // PRIVATE
this.get = function() { return a; }; // PUBLIC AND PRIVILEGED???
}
new S().get();
get
方法是公共方法,也是特权方法......所以
当他说公共方法无法访问私人成员他有什么关系?
感谢。
答案 0 :(得分:3)
get
能够访问a
的唯一方法是通过闭包,这样才能有效地使其成为特权方法。它是否公开与 特权的事实无关。
答案 1 :(得分:1)
要专门回答有关公共方法的问题,因为您似乎理解了特权的想法,请从您的示例中考虑:
S.prototype.something = function ...
这是公开的,但不是特权,因为它无法访问私有变量a
答案 2 :(得分:0)
您可以获得a
的私有成员S
的值并不意味着您可以“访问”a
。例如,除非提供类似a
的方法,否则您无法更改set
的值。您将获得一个方法(一个接口,如果可能的话)get
,它是“受欢迎的”以获得a
的值,该值是S的私有成员。