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

首頁 > 開發(fā) > JS > 正文

JavaScript中利用構(gòu)造器函數(shù)模擬類的方法

2024-05-06 16:35:13
字體:
供稿:網(wǎng)友

前言

本文小編帶大家一起學(xué)習(xí)的是在 JavaScript 中使用構(gòu)造器函數(shù)(construcor function)模擬類。下面話不多說,感興趣的朋友們下面來一起看看吧。

構(gòu)造器函數(shù)簡介

你可以使用 ES6 的 class 關(guān)鍵字來實現(xiàn)類,不過我建議你使用傳統(tǒng)的構(gòu)造器函數(shù)來模擬類,因為這樣可以給人一種你是個 JavaScript 老手的錯覺,哈哈!

什么是構(gòu)造器函數(shù)?構(gòu)造器函數(shù)是編寫對象的方法之一。一般情況下,你可以這樣編寫一個對象:

var obj = { a:1, b:2 };

但也可以使用構(gòu)造器函數(shù)來編寫對象:

function Obj(a, b){ this.a = a; this.b = b;}var obj = new Obj(1, 2); //obj 等價于 { a:1, b:2 }

使用構(gòu)造器函數(shù)的好處在于可以傳遞參數(shù)。構(gòu)造器函數(shù)通常首字母大寫,而且需要使用 new 關(guān)鍵詞來調(diào)用。在 JavaScript 中是沒有類的,利用構(gòu)造器函數(shù)我們可以模擬一個類。

使用構(gòu)造器函數(shù)編寫棧類

了解了構(gòu)造器函數(shù),我們使用它編寫一個迷你的棧類,下面就是實現(xiàn)代碼:

Stack.js

function Stack() { // 私有變量 items,用于記錄數(shù)組,對象不能直接操作 var items = []; // 類方法 push,在數(shù)組末尾添加項,對象可以直接調(diào)用 this.push = function (element) { items.push(element); }; // 刪除并返回數(shù)組末尾的項 this.pop = function () { return items.pop(); };}

上述棧類中,有個私有變量 items ,為何它就不能直接操作呢?為何掛在 this 上的方法可以直接調(diào)用?因為 new 操作符會將構(gòu)造器函數(shù)中的 this 指向生成的對象,也就是說掛在 this 上的方法或?qū)傩詫頃蔀樯蓪ο蟮姆椒ɑ驅(qū)傩裕钥梢灾苯诱{(diào)用。而 items 則是函數(shù)內(nèi)部的一個局部變量,它在函數(shù)外部是不可見的,生成對象只能通過調(diào)用自身的方法,沿著作用域鏈來操作 items。

var stack = new Stack();// stack 對象不能直接操作items,結(jié)果是 undefinedconsole.log(stack.items)  // stack 對象可以直接操作構(gòu)造器函數(shù)中掛在 this 上的屬性和方法stack.push(1);// 打印了1console.log(stack.pop())

如果你不熟悉 JavaScript ,那么你應(yīng)該先學(xué)習(xí)一下 JavaScript 作用域、this 和 new 操作符的相關(guān)知識。推薦閱讀參考 Stoyan Stefanow 的《JavaScript 面向?qū)ο缶幊讨改稀罚@本書里面有很多小的代碼片段以及相關(guān)的圖文解讀,可以幫助你更好地理解 JavaScript 的相關(guān)特性。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用Javascript能帶來一定的幫助,如果有疑問大家可以留言交流。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青岛市| 葫芦岛市| 香河县| 阿克陶县| 米泉市| 福建省| 习水县| 兴和县| 湛江市| 昌平区| 铁岭县| 安化县| 台中市| 小金县| 利辛县| 安溪县| 琼结县| 全椒县| 突泉县| 新干县| 宜宾县| 泰州市| 巴林右旗| 青岛市| 芜湖县| 隆昌县| 浪卡子县| 屏东县| 台中市| 饶平县| 登封市| 河池市| 濉溪县| 板桥市| 上栗县| 惠来县| 当雄县| 阿尔山市| 普兰店市| 宁波市| 平泉县|