<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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系列教程 - 新的類語法實戰選項卡(詳解)

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

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

        js es6系列教程 - 新的類語法實戰選項卡(詳解):其實es6的面向對象很多原理和機制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向對象語法. 一、用es6封裝一個基本的類 class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return
        推薦度:
        導讀js es6系列教程 - 新的類語法實戰選項卡(詳解):其實es6的面向對象很多原理和機制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向對象語法. 一、用es6封裝一個基本的類 class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return

        其實es6的面向對象很多原理和機制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向對象語法.

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

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

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

        首先說下語法規則:

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

        constructor就是構造函數,這個是關鍵字,當實例化對象的時候,這個構造函數會被自動調用

        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行實例化和調用方法還是跟es5一樣

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

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

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

        第9行還是驗證了es5的原型鏈特點:對象的隱式原型指向構造函數的原型對象

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

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

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

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

        三、利用基本的類語法,封裝經典的選項卡

        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系列教程 - 新的類語法實戰選項卡(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

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

        文檔

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

        js es6系列教程 - 新的類語法實戰選項卡(詳解):其實es6的面向對象很多原理和機制還是ES5的,只不過把語法改成類似php和java老牌后端語言中的面向對象語法. 一、用es6封裝一個基本的類 class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return
        推薦度:
        標簽: js 語法 ES6
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: a级黄色毛片免费播放视频| 日本视频免费观看| 日韩在线视频免费看| 久久亚洲AV午夜福利精品一区| 一本久久A久久免费精品不卡| 国产zzjjzzjj视频全免费| 亚洲av无码专区在线观看下载| 无码高潮少妇毛多水多水免费| 亚洲性色AV日韩在线观看| 中文字幕在线观看免费| 色噜噜AV亚洲色一区二区| 巨胸狂喷奶水视频www网站免费| 亚洲人成网77777色在线播放| 亚洲丁香婷婷综合久久| 日韩中文字幕在线免费观看| www亚洲精品久久久乳| 亚洲成av人片在线观看天堂无码| 国产va免费观看| 亚洲视频免费一区| 色播在线永久免费视频| 一区二区三区精品高清视频免费在线播放| 亚洲国产精品狼友中文久久久| 色多多A级毛片免费看| 水蜜桃亚洲一二三四在线 | 婷婷亚洲综合五月天小说| 亚洲网站在线免费观看| 亚洲精品人成网线在线播放va| 国产免费资源高清小视频在线观看| 四虎精品成人免费视频| 久久香蕉国产线看观看亚洲片| 国内精自视频品线六区免费| 国产成人亚洲午夜电影| 亚洲AV无码一区二区三区系列| 国产免费的野战视频| 人人爽人人爽人人片av免费| 亚洲AV永久无码区成人网站| 女人18一级毛片免费观看| 十八禁在线观看视频播放免费| 亚洲乱码一二三四区乱码| 亚洲精品成人在线| 亚洲一区在线免费观看|