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

首頁 > 開發 > JS > 正文

JavaScript中的私有成員

2024-09-06 12:44:52
字體:
來源:轉載
供稿:網友

JavaScript是世界上是被誤解得最厲害的編程語言。有些人認為它不具備“信息隱藏”的能力,因為JavaScript的對象沒有私有變量和方法。這是誤解。JavaScript對象可以擁有私有成員,下面我們來看看怎么做。(SharkUI.com注:JavaScript并不是真正擁有私有、公有等等OOP的特性,這篇譯文中提到的這些私有、公有、特權等特性,是利用JavaScript的其他特性(參看本文的“閉包”一節)“模擬”出來的。感興趣的話可以搜索相關的文章來看,當然也可以不管這些,就當它是真正的OOP來用。Have fun!)

對象

JavaScript是建立在對象之上的。數組(Array)是對象,函數(Function)是對象,對象(Objects)當然也是對象。那什么是對象呢?對象是一組“名稱:值”對(name-value pair)的集合。名稱是字符串,值卻可以是字符串、數值、布爾或對象(包括數組和函數)。對象通常是用哈希表來實現的,以便可以快速地取值。

如果值是一個函數,我們就可以把它當作一個“方法”。當對象的一個方法被執行,變量this就被設為對象本身。如此,方法就可以通過this變量來訪問對象的實例。

對象可以通過“構造器(constructor)”來創建。構造器是一個擁有初始化對象的函數。構造器提供了類似其他語言中的“類(class)”所提供的特性和功能,包括靜態變量和方法。

公有

對象的所有成員都是公有成員。任何函數都可以訪問、修改或者刪除這些成員,當然也可以添加新的成員。給對象添加成員的兩種主要方法:

通過構造器

這種方法一般用來初始化對象實例的公有變量。構造器的this變量被用來給對象添加成員:

function Container(param) {  this.member = param;}

構造一個新的對象:

var myContainer = new Container('abc');

然后,公有變量 myContainer.member 就擁有了值 'abc'。

通過原型(prototype)

這種方法通常用來添加公有方法。在對象本身搜尋一個成員但沒有找到時,就使用構造器的原型(prototype)成員。這種原型機制實現了面向對象所謂的 “繼承(inheritance)”,同時也節省了內存。給創建自同一個構造器的所有的對象加上一個方法,只需要給構造器的prototype增加一個函數:

Container.prototype.stamp = function (string) {  return this.member + string;}

然后我們就可以調用這個方法:

myContainer.stamp('def')

返回'abcdef'。

私有

私有(Private)成員是由構造器創建的。通常構造器中用var聲明的變量和函數參數成為私有成員。

function Container(param) {  this.member = param;  var secret = 3;  var self = this;}

這個構造器創建了三個私有的實例變量:param,secret和self。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 密云县| 昭觉县| 隆德县| 新民市| 全南县| 徐闻县| 阜阳市| 蒙山县| 甘泉县| 江陵县| 晋州市| 阿拉尔市| 马尔康县| 鄂托克旗| 三原县| 永泰县| 枣阳市| 凤凰县| 叶城县| 托克托县| 衡东县| 江口县| 丹棱县| 崇州市| 富源县| 焦作市| 乐平市| 洛宁县| 巴彦淖尔市| 石泉县| 来宾市| 梨树县| 甘洛县| 阜平县| 雅江县| 海安县| 金山区| 平和县| 徐汇区| 中阳县| 疏勒县|