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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、利用基本的類用法,封裝一個加法運(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 ) );

三、利用基本的類語法,封裝經(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系列教程 - 新的類語法實(shí)戰(zhàn)選項(xiàng)卡(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

奈曼旗| 湾仔区| 裕民县| 南投市| 元阳县| 遂宁市| 贡山| 汤阴县| 城步| 嘉荫县| 固始县| 剑川县| 南靖县| 峨山| 石狮市| 三台县| 临沧市| 宁夏| 仙游县| 南木林县| 云霄县| 德州市| 广东省| 梁山县| 将乐县| 英超| 治多县| 金堂县| 资源县| 淮安市| 西昌市| 龙川县| 双城市| 泸州市| 丰县| 衡东县| 峨山| 龙海市| 绵阳市| 车险| 土默特左旗|