最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年09月02日 09:41:52   投稿:jingxian  
下面小編就為大家?guī)硪黄猨s es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

一、用es6封裝一個基本的類

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

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

首先說下語法規(guī)則:

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

constructor就是構(gòu)造函數(shù),這個是關(guān)鍵字,當實例化對象的時候,這個構(gòu)造函數(shù)會被自動調(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行實例化和調(diào)用方法還是跟es5一樣

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

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

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

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

第10行驗證oP對象通過原型鏈查找到sayName方法

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

二、利用基本的類用法,封裝一個加法運算

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 ) );

三、利用基本的類語法,封裝經(jī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="點我1" data-target="#div1" class="active">
  <input type="button" value="點我2" data-target="#div2">
  <input type="button" value="點我3" data-target="#div3">
  <input type="button" value="點我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系列教程 - 新的類語法實戰(zhàn)選項卡(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • layui使用及簡單的三級聯(lián)動實現(xiàn)教程

    layui使用及簡單的三級聯(lián)動實現(xiàn)教程

    這篇文章主要給大家介紹了關(guān)于layui使用及簡單的三級聯(lián)動的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js 獲取屏幕各種寬高的方法(瀏覽器兼容)

    js 獲取屏幕各種寬高的方法(瀏覽器兼容)

    js 獲取屏幕各種寬高的方法(瀏覽器兼容),需要的朋友可以參考一下
    2013-05-05
  • 10個必備的JavaScript?async/await工具函數(shù)分享

    10個必備的JavaScript?async/await工具函數(shù)分享

    當談到異步編程時,async/await是JavaScript中常用的功能之一,本文為大家整理了10個常用的await和async函數(shù)示例,感興趣的小伙伴可以參考一下
    2023-12-12
  • 基于Particles.js制作超炫粒子動態(tài)背景效果(仿知乎)

    基于Particles.js制作超炫粒子動態(tài)背景效果(仿知乎)

    本文給大家分享Particles.js基于Canvas畫布創(chuàng)建粒子顆粒效果,代碼非常簡單,需要的朋友參考下吧
    2017-09-09
  • js通過canvas生成圖片縮略圖

    js通過canvas生成圖片縮略圖

    對于生成縮略圖一般做法是通過后端語言php等來生成,但是為了給服務(wù)器減壓,我們或許可以從前端來著手,先生成好不同尺寸的縮略圖,傳給后端,而后端只需要將前端傳過來的圖片進行存儲就好了
    2020-10-10
  • 文本框只能輸入數(shù)字的實現(xiàn)方法(兼容IE火狐)

    文本框只能輸入數(shù)字的實現(xiàn)方法(兼容IE火狐)

    下面小編就為大家?guī)硪黄谋究蛑荒茌斎霐?shù)字的實現(xiàn)方法(兼容IE火狐)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 純js實現(xiàn)手風(fēng)琴效果

    純js實現(xiàn)手風(fēng)琴效果

    這篇文章主要介紹了純js+html制作手風(fēng)琴和純css+html制作手風(fēng)琴兩種效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • ES6的解構(gòu)賦值實例詳解

    ES6的解構(gòu)賦值實例詳解

    解構(gòu)賦值允許你使用類似數(shù)組或?qū)ο笞置媪康恼Z法將數(shù)組和對象的屬性賦給各種變量。這篇文章主要介紹了ES6的解構(gòu)賦值的實例代碼 ,需要的朋友可以參考下
    2019-05-05
  • JavaScript定義函數(shù)的三種實現(xiàn)方法

    JavaScript定義函數(shù)的三種實現(xiàn)方法

    這篇文章主要介紹了JavaScript定義函數(shù)的三種實現(xiàn)方法的相關(guān)資料,希望通過本文大家能夠掌握三種定義函數(shù)的方法,需要的朋友可以參考下
    2017-09-09
  • window.addEventListener來解決讓一個js事件執(zhí)行多個函數(shù)

    window.addEventListener來解決讓一個js事件執(zhí)行多個函數(shù)

    可能你也碰到過這種情況,就是在js的代碼中用了window.onload后,可能會影響到body中的onload事件。這時就要用window.attachEvent和window.addEventListener來解決一下,需要的朋友可以參考下
    2012-12-12

最新評論

临沭县| 博爱县| 广饶县| 成都市| 广安市| 马龙县| 宁晋县| 景谷| 隆德县| 洮南市| 武强县| 手机| 岳普湖县| 清水县| 景谷| 遵义县| 宁阳县| 东阿县| 中山市| 仁化县| 孟津县| 唐河县| 慈溪市| 阿克| 长沙县| 寿宁县| 南木林县| 阳新县| 页游| 会昌县| 措勤县| 新巴尔虎右旗| 石河子市| 鄂州市| 绍兴县| 儋州市| 武汉市| 三亚市| 商南县| 东山县| 郓城县|