![](/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.