js es6系列教程 - 新的類語(yǔ)法實(shí)戰(zhàn)選項(xiàng)卡(詳解)
其實(shí)es6的面向?qū)ο蠛芏嘣砗蜋C(jī)制還是ES5的,只不過(guò)把語(yǔ)法改成類似php和java老牌后端語(yǔ)言中的面向?qū)ο笳Z(yǔ)法.
一、用es6封裝一個(gè)基本的類
class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return this.userName; } }
是不是很向php和java中的類, 其實(shí)本質(zhì)還是原型鏈,我們往下看就知道了
首先說(shuō)下語(yǔ)法規(guī)則:
class Person中的Person就是類名,可以自定義
constructor就是構(gòu)造函數(shù),這個(gè)是關(guān)鍵字,當(dāng)實(shí)例化對(duì)象的時(shí)候,這個(gè)構(gòu)造函數(shù)會(huì)被自動(dòng)調(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行判斷對(duì)象是否是類(Person)和Object的實(shí)例, 結(jié)果跟es5一樣, 這個(gè)時(shí)候,我們肯定會(huì)想到Person的本質(zhì)是否就是一個(gè)函數(shù)呢
第7行完全驗(yàn)證了我們的想法,類Person本質(zhì)就是一個(gè)函數(shù)
第8行可以看到sayName這個(gè)函數(shù)其實(shí)還是加在Person的原型對(duì)象上
第9行還是驗(yàn)證了es5的原型鏈特點(diǎn):對(duì)象的隱式原型指向構(gòu)造函數(shù)的原型對(duì)象
第10行驗(yàn)證oP對(duì)象通過(guò)原型鏈查找到sayName方法
這種類的語(yǔ)法,被叫做語(yǔ)法糖,本質(zhì)還是原型鏈
二、利用基本的類用法,封裝一個(gè)加法運(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 ) );
三、利用基本的類語(yǔ)法,封裝經(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系列教程 - 新的類語(yǔ)法實(shí)戰(zhàn)選項(xiàng)卡(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 溫習(xí)Javascript基礎(chǔ)語(yǔ)法之詞法結(jié)構(gòu)
- JavaScript語(yǔ)法約定和程序調(diào)試原理解析
- javascript中正則表達(dá)式語(yǔ)法詳解
- javascript 高級(jí)語(yǔ)法之繼承的基本使用方法示例
- 詳解JavaScript 新語(yǔ)法之Class 的私有屬性與私有方法
- JSON基本語(yǔ)法及與JavaScript的異同實(shí)例分析
- NodeJS模塊與ES6模塊系統(tǒng)語(yǔ)法及注意點(diǎn)詳解
- JavaScript ES6中的簡(jiǎn)寫語(yǔ)法總結(jié)與使用技巧
- 關(guān)于javascript事件響應(yīng)的基礎(chǔ)語(yǔ)法總結(jié)(必看篇)
- 深入理解JavaScript中的語(yǔ)法和代碼結(jié)構(gòu)
相關(guān)文章
詳解uniapp如何處理圖片加載過(guò)程中的錯(cuò)誤
這篇文章給大家詳細(xì)介紹了uniapp如何處理圖片加載過(guò)程中的錯(cuò)誤,文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-10-10JavaScript實(shí)現(xiàn)模仿桌面窗口的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)模仿桌面窗口的方法,可實(shí)現(xiàn)模仿桌面窗口的打開、關(guān)閉、移動(dòng)、縮放及最大化、最小化等功能,需要的朋友可以參考下2015-07-07Bootstrap 網(wǎng)站實(shí)例之單頁(yè)營(yíng)銷網(wǎng)站
這篇文章主要介紹了Bootstrap 網(wǎng)站實(shí)例之單頁(yè)營(yíng)銷網(wǎng)站的相關(guān)資料,本文給大家介紹的非常詳細(xì)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法,實(shí)例分析了js操作li節(jié)點(diǎn)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02怎樣用JavaScript實(shí)現(xiàn)觀察者模式
這篇文章主要介紹了怎樣用JavaScript實(shí)現(xiàn)觀察者模式,想學(xué)習(xí)設(shè)計(jì)模式的同學(xué),可以參考一下2021-04-04微信小程序中的canvas 文字?jǐn)嘈泻褪÷蕴?hào)顯示功能的處理方法
大家都知道在canvas中沒(méi)有提供方法來(lái)處理文字的多行問(wèn)題,只有通過(guò)截取指定字符串來(lái)達(dá)到目的。接下來(lái)通過(guò)本文給大家介紹微信小程序中的canvas 文字?jǐn)嘈泻褪÷蕴?hào)顯示功能 ,需要的朋友可以參考下2018-11-11