最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:31:08
文檔

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

js es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解):其實es6的面向?qū)ο蠛芏嘣砗蜋C制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向?qū)ο笳Z法. 一、用es6封裝一個基本的類 class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return
推薦度:
導讀js es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解):其實es6的面向?qū)ο蠛芏嘣砗蜋C制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向?qū)ο笳Z法. 一、用es6封裝一個基本的類 class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return

其實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就是構造函數(shù),這個是關鍵字,當實例化對象的時候,這個構造函數(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的實例, 結果跟es5一樣, 這個時候,我們肯定會想到Person的本質(zhì)是否就是一個函數(shù)呢

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

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

第9行還是驗證了es5的原型鏈特點:對象的隱式原型指向構造函數(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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

js es6系列教程 - 新的類語法實戰(zhàn)選項卡(詳解):其實es6的面向?qū)ο蠛芏嘣砗蜋C制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向?qū)ο笳Z法. 一、用es6封裝一個基本的類 class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return
推薦度:
標簽: js 語法 ES6
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top