![](/img/trans.png)
[英]Crockford's Javascript Applicative Order Y Combinator syntax construct explanation?
[英]Crockford explanation of private properties
我读到了这个:来自Crockford网站的私有Javascript变量
但我对他的术语有些困惑:
在这里他说:
对象的成员都是公共成员Ex。 `this.membername = value;
后:
私有变量不能被外部访问,也不能被对象自己的公共方法访问。
接着:
特权方法能够访问私有变量和方法,并且本身可以访问公共方法和外部
因此,特权方法似乎与公共方法不同,但如果我这样做:
function S()
{
var a = 11; // PRIVATE
this.get = function() { return a; }; // PUBLIC AND PRIVILEGED???
}
new S().get();
get
方法是一种公共方法,也是一种特权方法...所以当他说公共方法无法访问私人成员时他会关注什么?
谢谢。
唯一的方法get
能够访问a
就是通过关闭,以便有效地使它成为一个特权方法。 它是否公开与它是特权的事实无关。
要专门回答关于公共方法的问题,因为您似乎理解了特权的想法,请从您的示例中考虑:
S.prototype.something = function ...
这将是公开的,但不是特权,因为它无法访问私有变量a
你可以得到a
S
的私人成员的价值并不意味着你可以“访问” a
。 例如,你不能改变的值a
,除非一个方法,像set
,提供这样做。 给你一个方法(一个接口,如果你可以) get
,这是“previleged”得到的值a
是S的私有成员
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.