亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js es6系列教程 - 新的類語(yǔ)法實(shí)戰(zhàn)選項(xiàng)卡(詳解)

 更新時(shí)間:2017年09月02日 09:41:52   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇js es6系列教程 - 新的類語(yǔ)法實(shí)戰(zhàn)選項(xiàng)卡(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

其實(shí)es6的面向?qū)ο蠛芏嘣砗蜋C(jī)制還是ES5的,只不過(guò)把語(yǔ)法改成類似php和java老牌后端語(yǔ)言中的面向?qū)ο笳Z(yǔ)法.

一、用es6封裝一個(gè)基本的類

class Person{
   constructor( uName ){
    this.userName = uName;
   }
   sayName(){
    return this.userName;
   }
  }

是不是很向php和java中的類, 其實(shí)本質(zhì)還是原型鏈,我們往下看就知道了

首先說(shuō)下語(yǔ)法規(guī)則:

class Person中的Person就是類名,可以自定義

constructor就是構(gòu)造函數(shù),這個(gè)是關(guān)鍵字,當(dāng)實(shí)例化對(duì)象的時(shí)候,這個(gè)構(gòu)造函數(shù)會(huì)被自動(dòng)調(diào)用

let oP = new Person( 'ghostwu' );
  console.log( oP.sayName() ); //ghostwu

  console.log( oP instanceof Person ); //true
  console.log( oP instanceof Object ); //true
 
  console.log( typeof Person ); //function
  console.log( typeof Person.prototype.sayName ); //function
  console.log( oP.__proto__ === Person.prototype ); //true
  console.log( 'sayName' in oP ); //true 
  console.log( Person.prototype );

第1行和第2行實(shí)例化和調(diào)用方法還是跟es5一樣

第4行和第5行判斷對(duì)象是否是類(Person)和Object的實(shí)例, 結(jié)果跟es5一樣, 這個(gè)時(shí)候,我們肯定會(huì)想到Person的本質(zhì)是否就是一個(gè)函數(shù)呢

第7行完全驗(yàn)證了我們的想法,類Person本質(zhì)就是一個(gè)函數(shù)

第8行可以看到sayName這個(gè)函數(shù)其實(shí)還是加在Person的原型對(duì)象上

第9行還是驗(yàn)證了es5的原型鏈特點(diǎn):對(duì)象的隱式原型指向構(gòu)造函數(shù)的原型對(duì)象

第10行驗(yàn)證oP對(duì)象通過(guò)原型鏈查找到sayName方法

這種類的語(yǔ)法,被叫做語(yǔ)法糖,本質(zhì)還是原型鏈

二、利用基本的類用法,封裝一個(gè)加法運(yùn)算

class Operator{
   constructor( n1 = 1, n2 = 2 ){
    this.num1 = n1;
    this.num2 = n2;
   }
   add( n1 = 10, n2 = 20 ){
    let num1 = n1 || this.num1, num2 = n2 || this.num2;
    return num1 + num2;
   }
  }
  var oper = new Operator();
  console.log( oper.add( 100, 200 ) );

三、利用基本的類語(yǔ)法,封裝經(jīng)典的選項(xiàng)卡

css代碼:

#tab div {
   width: 200px;
   height: 200px;
   border: 1px solid #000;
   display: none;
  }

  #tab div:nth-of-type(1) {
   display: block;
  }

  .active {
   background: yellow;
  }

html代碼:

<div id="tab">
  <input type="button" value="點(diǎn)我1" data-target="#div1" class="active">
  <input type="button" value="點(diǎn)我2" data-target="#div2">
  <input type="button" value="點(diǎn)我3" data-target="#div3">
  <input type="button" value="點(diǎn)我4" data-target="#div4">
  <div id="div1">1</div>
  <div id="div2">2</div>
  <div id="div3">3</div>
  <div id="div4">4</div>
 </div>

javascript代碼:

window.onload = () => {
   class Tab {
    constructor( context ) {
     let cxt = context || document;
     this.aInput = cxt.querySelectorAll( "input" );
     this.aDiv = cxt.querySelectorAll( "div" );
    }
    bindEvent(){
     let targetId = null;
     this.aInput.forEach(( ele, index )=>{
      ele.addEventListener( "click", ()=>{
       targetId = ele.dataset.target;
       this.switchTab( ele, targetId );
      });
     });
    }
    switchTab( curBtn, curId ){
     let oDiv = document.querySelector( curId );
     this.aDiv.forEach(( ele, index )=>{
      ele.style.display = 'none';
      this.aInput[index].className = '';
     });
     curBtn.className = 'active';
     oDiv.style.display = 'block';
    }
   }
   new Tab( document.querySelector( "#tab" ) ).bindEvent();
  }

以上這篇js es6系列教程 - 新的類語(yǔ)法實(shí)戰(zhàn)選項(xiàng)卡(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解uniapp如何處理圖片加載過(guò)程中的錯(cuò)誤

    詳解uniapp如何處理圖片加載過(guò)程中的錯(cuò)誤

    這篇文章給大家詳細(xì)介紹了uniapp如何處理圖片加載過(guò)程中的錯(cuò)誤,文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • JS基本遍歷方法詳解

    JS基本遍歷方法詳解

    這篇文章主要給大家介紹了JS基本遍歷方法,for,for...in,for...of,文章通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • JavaScript實(shí)現(xiàn)模仿桌面窗口的方法

    JavaScript實(shí)現(xiàn)模仿桌面窗口的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)模仿桌面窗口的方法,可實(shí)現(xiàn)模仿桌面窗口的打開、關(guān)閉、移動(dòng)、縮放及最大化、最小化等功能,需要的朋友可以參考下
    2015-07-07
  • Bootstrap 網(wǎng)站實(shí)例之單頁(yè)營(yíng)銷網(wǎng)站

    Bootstrap 網(wǎng)站實(shí)例之單頁(yè)營(yíng)銷網(wǎng)站

    這篇文章主要介紹了Bootstrap 網(wǎng)站實(shí)例之單頁(yè)營(yíng)銷網(wǎng)站的相關(guān)資料,本文給大家介紹的非常詳細(xì)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • JavaScript 空間坐標(biāo)的使用

    JavaScript 空間坐標(biāo)的使用

    這篇文章主要介紹了JavaScript 空間坐標(biāo)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法

    JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法

    這篇文章主要介紹了JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法,實(shí)例分析了js操作li節(jié)點(diǎn)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 怎樣用JavaScript實(shí)現(xiàn)觀察者模式

    怎樣用JavaScript實(shí)現(xiàn)觀察者模式

    這篇文章主要介紹了怎樣用JavaScript實(shí)現(xiàn)觀察者模式,想學(xué)習(xí)設(shè)計(jì)模式的同學(xué),可以參考一下
    2021-04-04
  • uni-app使用微信小程序云函數(shù)的步驟示例

    uni-app使用微信小程序云函數(shù)的步驟示例

    這篇文章主要介紹了uni-app使用微信小程序云函數(shù)的步驟示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • JavaScript 全角轉(zhuǎn)半角部分

    JavaScript 全角轉(zhuǎn)半角部分

    JavaScript 全角轉(zhuǎn)半角部分 ,需要的朋友可以參考下。
    2009-10-10
  • 微信小程序中的canvas 文字?jǐn)嘈泻褪÷蕴?hào)顯示功能的處理方法

    微信小程序中的canvas 文字?jǐn)嘈泻褪÷蕴?hào)顯示功能的處理方法

    大家都知道在canvas中沒(méi)有提供方法來(lái)處理文字的多行問(wèn)題,只有通過(guò)截取指定字符串來(lái)達(dá)到目的。接下來(lái)通過(guò)本文給大家介紹微信小程序中的canvas 文字?jǐn)嘈泻褪÷蕴?hào)顯示功能 ,需要的朋友可以參考下
    2018-11-11

最新評(píng)論