国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[js高手之路] es6系列教程 - 新的類語法實(shí)戰(zhàn)選項(xiàng)卡

yintaolaowanzi / 2513人閱讀

摘要:其實(shí)的面向?qū)ο蠛芏嘣砗蜋C(jī)制還是的,只不過把語法改成類似和老牌后端語言中的面向?qū)ο笳Z法一用封裝一個基本的類是不是很向和中的類其實(shí)本質(zhì)還是原型鏈,我們往下看就知道了首先說下語法規(guī)則中的就是類名,可以自定義就是構(gòu)造函數(shù),這個是關(guān)鍵字,當(dāng)實(shí)例化對

其實(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代碼:

1
2
3
4

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88369.html

相關(guān)文章

  • [js高手之路]js單頁hash路由原理與應(yīng)用實(shí)戰(zhàn)

    摘要:什么是路由通俗點(diǎn)說,就是不同的顯示不同的內(nèi)容什么是單頁應(yīng)用單頁,英文縮寫為,就是把各種功能做在一個頁面內(nèi)那所謂的單頁路由應(yīng)用就是在一個頁面內(nèi),通過切換地址欄的來實(shí)現(xiàn)切換內(nèi)容的變化如何知道切換了呢當(dāng)后面的錨文本發(fā)生變化時,會觸發(fā)事件。 什么是路由? 通俗點(diǎn)說,就是不同的URL顯示不同的內(nèi)容 什么是單頁應(yīng)用? 單頁,英文縮寫為SPA( Single Page Application),就是...

    tinna 評論0 收藏0
  • [js高手之路]設(shè)計(jì)模式系列課程-發(fā)布者,訂閱者重構(gòu)購物車

    摘要:發(fā)布者訂閱者模式,是一種很常見的模式,比如一買賣房子生活中的買房,賣房,中介就構(gòu)成了一個發(fā)布訂閱者模式,買房的人,一般需要的是房源,價格,使用面積等信息,他充當(dāng)了訂閱者的角色中介拿到賣主的房源信息,根據(jù)手頭上掌握的客戶聯(lián)系信息買房的人的手機(jī) 發(fā)布者訂閱者模式,是一種很常見的模式,比如: 一、買賣房子 生活中的買房,賣房,中介就構(gòu)成了一個發(fā)布訂閱者模式,買房的人,一般需要的是房源,價格,...

    fevin 評論0 收藏0
  • [js高手之路]深入淺出webpack教程系列4-插件使用之html-webpack-plugin配

    摘要:還記得我們上文中的文件嗎那里面的標(biāo)簽還是寫死的文件,那么怎么把他們變成動態(tài)的文件,這個動態(tài)生成的文件會動態(tài)引入我們打包后生成的文件呢,我們可以使用插件,首先安裝這個插件,好的,接下來就開始用這個插件了官方參考文檔插件通用用法 還記得我們上文中的index.html文件嗎? 那里面的script標(biāo)簽還是寫死的index.bundle.js文件,那么怎么把他們變成動態(tài)的index.html...

    qpal 評論0 收藏0
  • 2017年1月前端月報

    摘要:平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。年以前看這個網(wǎng)址概況在線地址前端開發(fā)群月報提交原則技術(shù)文章新的為主。 平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個網(wǎng)址:http://www.kancloud.cn/jsfron... 概況 在線地址:http://www.kancloud.cn/jsfront/month/82796 JS前端開發(fā)群月報 提交原則: 技...

    FuisonDesign 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<