成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript可擴(kuò)展枚舉封裝

fevin / 2159人閱讀

摘要:枚舉結(jié)構(gòu)通常我們定義的枚舉值使用如果需要包含其他屬性,我們可以添加額外的對象使用封裝下面我們進(jìn)行封裝枚舉類栗子步驟步驟通過獲取當(dāng)前列的值步驟初始化缺少必要的或根據(jù)獲取對象值狀態(tài)值獲取枚舉數(shù)組使用方法步驟步驟步驟

枚舉結(jié)構(gòu)

通常我們定義的枚舉值:

var SizeEnum = {
  SMALL: 1,
  MEDIUM: 2,
  LARGE: 3,
};

使用var mySize = SizeEnum.SMALL;

如果需要包含其他屬性,我們可以添加額外的對象

var SizeEnum = {
  SMALL: 1,
  MEDIUM: 2,
  LARGE: 3,
  properties: {
    1: {name: "small", value: 1, code: "S"},
    2: {name: "medium", value: 2, code: "M"},
    3: {name: "large", value: 3, code: "L"}
  }
};

使用:

var mySize = SizeEnum.MEDIUM;
var myCode = SizeEnum.properties[mySize].code; // myCode == "M"
封裝

下面我們進(jìn)行封裝:

/**
 * 枚舉類
 *
 * @author harris.xc
 * @param props  [{key: number|string, value: number|string, ...other}]
 * 栗子:
 *  const StepEnum = new Enum([
 *    { key: "STEP1", name: "步驟1", value: 1 },
 *    { key: "SETP2", name: "步驟2", value: 2 },
 *  ]);
 *
 * @class Enum
 *
 * @method get(value) 通過value獲取當(dāng)前列的值
 *                    return { key: "SETP2", name: "步驟2", value: 2 }
 *
 * @returns {key1: number|string, key2: number|string}
 * {
 *   CREATE: 1,
 *   APPROVED: 2,
 * }
 */
export default class Enum {
  /**
   * 初始化
   * @param {Array} props []
   */
  constructor(props = []) {
    this.__props = {};
    if (props.length) {
      props.forEach((element) => {
        if (element.key && element.value) {
          this[element.key] = element.value;
          this.__props[element.value] = element;
        } else {
          console.error("Enum缺少必要的key或value");
        }
      });
    }
  }

  /**
   * 根據(jù)value獲取對象值
   * @param {string|number} value 狀態(tài)值
   */
  get(value) {
    return this.__props[value];
  }
 
  /**
   * 獲取枚舉數(shù)組
   */
  getArray() {
    const arr = [];
    for (const key in this.__props) {
      if (Object.prototype.hasOwnProperty.call(this.__props, key)) {
        arr.push(this.__props[key]);
      }
    }
    return arr;
  }
}

使用方法:

let SizeEnum = new Enum([
    { key: "STEP1", name: "步驟1", value: 1 },
    { key: "SETP2", name: "步驟2", value: 2 }
]);

SizeEnum.STEP1; // 1
SizeEnum.get(SizeEnum.STEP1); // { key: "STEP1", name: "步驟1", value: 1 }

[https://stijndewitt.com/2014/...](

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99417.html

相關(guān)文章

  • JavaScript-面向?qū)ο?、Object類型

    摘要:面向?qū)ο竺嫦驅(qū)ο缶幊痰娜Q為簡稱。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程方式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑ο笙嗷f(xié)作的軟件設(shè)計(jì)。面向?qū)ο缶幊痰娜齻€主要特征是封裝繼承多態(tài)。 面向?qū)ο?面向?qū)ο缶幊痰娜Q為Object Oriented Programming,簡稱OOP。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程方式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑ο?..

    amuqiao 評論0 收藏0
  • JavaScript面向?qū)ο?..Object類型...

    摘要:面向?qū)ο竺嫦驅(qū)ο笫鞘裁疵嫦驅(qū)ο缶幊毯喎Q相似的對象稱為類面向?qū)ο缶幊痰娜齻€主要特征是封裝繼承多態(tài)所有的程序是由一定的屬性和行為對象組成的不同的對象的訪問通過函數(shù)調(diào)用來完成對象間所有的交流都是通過方法調(diào)用通過對封裝對象數(shù)據(jù)提高復(fù)用率是一種基于原 面向?qū)ο?面向?qū)ο笫鞘裁?面向?qū)ο缶幊?簡稱OOP 相似的對象 稱為類面向?qū)ο缶幊痰娜齻€主要特征是:1.封裝 2.繼承 3.多態(tài)所有的程序是由一定...

    keithyau 評論0 收藏0
  • JavaScript】面向?qū)ο?/b>

    摘要:一面向?qū)ο蟾攀雒嫦驅(qū)ο笫鞘裁词鞘褂靡幌盗袑ο笙嗷f(xié)作軟件設(shè)計(jì),目的是在編程中促進(jìn)更好靈活性和可維護(hù)性,憑借對模塊化重視,面向?qū)ο蟠a開發(fā)更簡單,容易理解面向?qū)ο蟮挠兄饕卣魇欠庋b繼承多態(tài)封裝封裝主要用于敘述對象中所包含封裝的內(nèi)容,由兩部分組 JS(JavaScript)一.面向?qū)ο?;概述?面向?qū)ο笫鞘裁矗?是使用一系列對象相互協(xié)作軟件設(shè)計(jì),目的是在編程中促進(jìn)更好靈活性和可維護(hù)性,憑借...

    gself 評論0 收藏0
  • JavaScript學(xué)習(xí)第七天筆記(面向?qū)ο螅?/b>

    摘要:面向?qū)ο蟾攀雒嫦驅(qū)ο缶幊痰娜Q是簡稱為。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建給予現(xiàn)實(shí)世界模型的一種編程模式。構(gòu)造函數(shù)構(gòu)造函數(shù)又被稱為構(gòu)造器或?qū)ο竽0?,是?chuàng)建對象的一個方法。 面向?qū)ο?概述 面向?qū)ο缶幊痰娜Q是Object Oriented Programming,簡稱為OOP。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建給予現(xiàn)實(shí)世界模型的一種編程模式。面向?qū)ο缶幊炭梢悦嫦驅(qū)ο缶幊痰娜齻€主要特征是:1.封裝 ...

    Tychio 評論0 收藏0
  • JavaScript中的面向?qū)ο髠€人分享

    摘要:面向?qū)ο竺嫦驅(qū)ο蟮母拍钏^面向?qū)ο缶陀贸橄蠓绞絼?chuàng)建基于顯示世界模型的一種變成模式面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑ο蠡ハ鄥f(xié)作的軟件設(shè)計(jì)備注面向?qū)ο笕Q簡稱面向?qū)ο缶幊痰闹饕齻€特征是封裝所謂封裝就是按要求使用得到對象的結(jié)果相關(guān)數(shù)據(jù)用于存儲 面向?qū)ο?面向?qū)ο蟮母拍? 所謂面向?qū)ο缶陀贸橄蠓绞絼?chuàng)建基于顯示世界模型的一種變成模式,面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑ο蠡ハ鄥f(xié)作的軟件設(shè)計(jì) 備注...

    DirtyMind 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<