簡體   English   中英

Crockford解釋私人財產

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM