欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年02月16日 10:16:43   作者:Lewis617  
JavaScript中沒有類的概念,所以其在對象創(chuàng)建方面與面向?qū)ο笳Z言有所不同。這篇文章主要介紹了JavaScript中利用構(gòu)造器函數(shù)模擬類的方法,文中給出了詳細的示例代碼和介紹,需要的朋友可以參考下,下面一起看看吧。

前言

本文小編帶大家一起學習的是在 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é)果是 undefined
console.log(stack.items) 
 
// stack 對象可以直接操作構(gòu)造器函數(shù)中掛在 this 上的屬性和方法
stack.push(1);
// 打印了1
console.log(stack.pop())

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

總結(jié)

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

相關(guān)文章

  • 使用純javascript實現(xiàn)經(jīng)典掃雷游戲

    使用純javascript實現(xiàn)經(jīng)典掃雷游戲

    本文給大家分享的是個人剛開始學習javascript的時候?qū)懙姆聎indows經(jīng)典的掃雷游戲的代碼,當時只是寫了下來,沒加注釋,這里補上,有需要的小伙伴可以參考下。
    2015-04-04
  • 原生JS實現(xiàn)多條件篩選

    原生JS實現(xiàn)多條件篩選

    這篇文章主要為大家詳細介紹了原生JS實現(xiàn)多條件篩選,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JS帶你深入領(lǐng)略Proxy的世界

    JS帶你深入領(lǐng)略Proxy的世界

    Proxy是es2015 標準規(guī)范加入的語法,很可能你只是聽說過,但并沒有用過,畢竟考慮到兼容的問題,不能輕易地使用Proxy特性。但現(xiàn)在隨著各個瀏覽器的更新迭代,Proxy的支持度也越來越高:而且使用Proxy進行代理和劫持,也漸漸成為了趨勢。
    2021-05-05
  • 微信小程序 如何引入外部字體庫iconfont的圖標

    微信小程序 如何引入外部字體庫iconfont的圖標

    這篇文章主要為大家詳細介紹了微信小程序引入外部字體庫iconfont圖標的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 純js實現(xiàn)的積木(div層)拖動功能示例

    純js實現(xiàn)的積木(div層)拖動功能示例

    這篇文章主要介紹了純js實現(xiàn)的積木(div層)拖動功能,結(jié)合實例形式分析了javascript隨機生成各種顏色div層及響應鼠標事件改變元素屬性實現(xiàn)拖動效果的相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • Bootstrap基本布局實現(xiàn)方法詳解

    Bootstrap基本布局實現(xiàn)方法詳解

    這篇文章主要為大家詳細介紹了Bootstrap基本布局實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實現(xiàn)方法

    JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實現(xiàn)方法

    json數(shù)據(jù)在ajax實現(xiàn)異步交互時起到了很重要的作用,他可以返回請求的數(shù)據(jù),然后利用客戶端的js進行解析,這一點體現(xiàn)出js的強大,本文介紹JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實現(xiàn)方法,需要了解的朋友可以參考下
    2012-12-12
  • 基于百度地圖實現(xiàn)產(chǎn)品銷售的單位位置查看功能設(shè)計與實現(xiàn)

    基于百度地圖實現(xiàn)產(chǎn)品銷售的單位位置查看功能設(shè)計與實現(xiàn)

    這篇文章主要介紹了基于百度地圖實現(xiàn)產(chǎn)品銷售的單位位置查看功能設(shè)計與實現(xiàn)的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • JavaScript數(shù)組去重由慢到快由繁到簡(優(yōu)化篇)

    JavaScript數(shù)組去重由慢到快由繁到簡(優(yōu)化篇)

    本文給大家介紹通過indexof去重,hash去重,排序后去重及set去重由慢到快有繁到簡的方法給大家介紹了js數(shù)組去重的方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-08-08
  • js判斷數(shù)組key是否存在(不用循環(huán))的簡單實例

    js判斷數(shù)組key是否存在(不用循環(huán))的簡單實例

    下面小編就為大家?guī)硪黄猨s判斷數(shù)組key是否存在(不用循環(huán))的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論