国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript 私有成員分析

2024-05-06 14:16:16
字體:
來源:轉載
供稿:網友

對象
JavaScript操作都是關于對象的。數組(Array)是對象,函數(Function)是對象。Object(類型)是對象。那么什么是對象呢?對象就是“名稱-值”對(name-value)。名稱是字符串,值可以是字符串、數值、布爾值或對象(包括數組和函數)。對象經常用哈希表實現,所以取值速度很快。
如果對象的一個值是函數(function),我們可以認為它是成員函數,當成員函數被調用時,this變量就會指向該對象。成員函數可以通過this變量訪問對象的成員。
對象可以通過構造器(constructor)生成,構造器是個初始化對象的函數。構造器在這里扮演了其他語言中“類”扮演的角色,也提供了定義static變量和方法的手段。
Public成員
對象的所有成員都是公開成員,誰都可以讀寫甚至刪除這些成員或添加新成員。添加新成員有兩種方法:
在構造器里添加
這通常被用來初始化公開的成員變量。利用構造器的this變量來把成員添加到對象里。
function Container(param)
{ this.member = param;}
用下面這行代碼生成一個對象實例
var myContainer = new Container('abc');
myContainer的member成員值為'abc'。
在原型中添加
這種方法經常用來添加公開成員函數。當Javascrīpt解釋器遇到一個對象的成員,發現對象自身中并不存在這個成員時,就會到對象構造函數 的原型中去找。原型機制可以用來實現繼承。它同樣占用內存。如果想要給某個構造函數生成的所有對象都添加一個方 法,只要給對象的原型添加這個方法就可以了。
Container.prototype.stamp = function (string) { return this.member + string;}
這樣就可以調用這個成員函數
myContainer.stamp('def')
返回值'abcdef'。
私有成員
私有成員是在構造器里產生的。var定義的變量和構造器的參數會成為私有成員。
function Container(param){
this.member = param;
var secret = 3;
var that = this;
}
這個構造器定義了三個私有變量:param,secret和self。它們屬性對象Container,而對象外的代碼或是對象的公開方法都無法訪問它們。
只有私有方法可以訪問。私有方法是構造器內定義的函數。
function Container(param){
function dec() {
if (secret > 0)
{ secret -= 1; return true; }
else {
return false;
} }
this.member = param;
var secret = 3;
var that = this;}
私有方法 dec 檢查實例變量 secret 的值,如果它大于0就減少它的值然后返回true;否則它返回false。
它可以用于限制這個對象只能被使用3次。
根據協議,我們定義了一個私有變量that,用來讓私有方法可以訪問對象本身。
這是一個變通的解決方案,需要它的根本原因在于ECMAscrīpt語言規范的一個錯誤,而這個錯誤導致內部函數的this變量有

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 贵南县| 弋阳县| 丰原市| 安溪县| 全南县| 巴东县| 南皮县| 景德镇市| 昌江| 湖南省| 交城县| 肇源县| 博野县| 肥城市| 乐山市| 白沙| 慈利县| 邹城市| 尼勒克县| 灯塔市| 永川市| 株洲市| 丹巴县| 克山县| 镇远县| 长兴县| 烟台市| 江阴市| 博乐市| 孙吴县| 长宁县| 理塘县| 鄄城县| 论坛| 明溪县| 岳西县| 汉中市| 丰宁| 静乐县| 昌平区| 岫岩|