摘要:其實(shí)的面向?qū)ο蠛芏嘣砗蜋C(jī)制還是的,只不過(guò)把語(yǔ)法改成類(lèi)似和老牌后端語(yǔ)言中的面向?qū)ο笳Z(yǔ)法一用封裝一個(gè)基本的類(lèi)是不是很向和中的類(lèi)其實(shí)本質(zhì)還是原型鏈,我們往下看就知道了首先說(shuō)下語(yǔ)法規(guī)則中的就是類(lèi)名,可以自定義就是構(gòu)造函數(shù),這個(gè)是關(guān)鍵字,當(dāng)實(shí)例化對(duì)
其實(shí)es6的面向?qū)ο蠛芏嘣砗蜋C(jī)制還是ES5的,只不過(guò)把語(yǔ)法改成類(lèi)似php和java老牌后端語(yǔ)言中的面向?qū)ο笳Z(yǔ)法.
一、用es6封裝一個(gè)基本的類(lèi)
class Person{ constructor( uName ){ this.userName = uName; } sayName(){ return this.userName; } }
是不是很向php和java中的類(lèi), 其實(shí)本質(zhì)還是原型鏈,我們往下看就知道了
首先說(shuō)下語(yǔ)法規(guī)則:
class Person中的Person就是類(lèi)名,可以自定義
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ì)象是否是類(lèi)(Person)和Object的實(shí)例, 結(jié)果跟es5一樣, 這個(gè)時(shí)候,我們肯定會(huì)想到Person的本質(zhì)是否就是一個(gè)函數(shù)呢
第7行完全驗(yàn)證了我們的想法,類(lèi)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方法
這種類(lèi)的語(yǔ)法,被叫做語(yǔ)法糖,本質(zhì)還是原型鏈
二、利用基本的類(lèi)用法,封裝一個(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 ) );
三、利用基本的類(lèi)語(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代碼:
1234
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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/88369.html
摘要:什么是路由通俗點(diǎn)說(shuō),就是不同的顯示不同的內(nèi)容什么是單頁(yè)應(yīng)用單頁(yè),英文縮寫(xiě)為,就是把各種功能做在一個(gè)頁(yè)面內(nèi)那所謂的單頁(yè)路由應(yīng)用就是在一個(gè)頁(yè)面內(nèi),通過(guò)切換地址欄的來(lái)實(shí)現(xiàn)切換內(nèi)容的變化如何知道切換了呢當(dāng)后面的錨文本發(fā)生變化時(shí),會(huì)觸發(fā)事件。 什么是路由? 通俗點(diǎn)說(shuō),就是不同的URL顯示不同的內(nèi)容 什么是單頁(yè)應(yīng)用? 單頁(yè),英文縮寫(xiě)為SPA( Single Page Application),就是...
摘要:發(fā)布者訂閱者模式,是一種很常見(jiàn)的模式,比如一買(mǎi)賣(mài)房子生活中的買(mǎi)房,賣(mài)房,中介就構(gòu)成了一個(gè)發(fā)布訂閱者模式,買(mǎi)房的人,一般需要的是房源,價(jià)格,使用面積等信息,他充當(dāng)了訂閱者的角色中介拿到賣(mài)主的房源信息,根據(jù)手頭上掌握的客戶(hù)聯(lián)系信息買(mǎi)房的人的手機(jī) 發(fā)布者訂閱者模式,是一種很常見(jiàn)的模式,比如: 一、買(mǎi)賣(mài)房子 生活中的買(mǎi)房,賣(mài)房,中介就構(gòu)成了一個(gè)發(fā)布訂閱者模式,買(mǎi)房的人,一般需要的是房源,價(jià)格,...
摘要:還記得我們上文中的文件嗎那里面的標(biāo)簽還是寫(xiě)死的文件,那么怎么把他們變成動(dòng)態(tài)的文件,這個(gè)動(dòng)態(tài)生成的文件會(huì)動(dòng)態(tài)引入我們打包后生成的文件呢,我們可以使用插件,首先安裝這個(gè)插件,好的,接下來(lái)就開(kāi)始用這個(gè)插件了官方參考文檔插件通用用法 還記得我們上文中的index.html文件嗎? 那里面的script標(biāo)簽還是寫(xiě)死的index.bundle.js文件,那么怎么把他們變成動(dòng)態(tài)的index.html...
摘要:平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。年以前看這個(gè)網(wǎng)址概況在線(xiàn)地址前端開(kāi)發(fā)群月報(bào)提交原則技術(shù)文章新的為主。 平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 概況 在線(xiàn)地址:http://www.kancloud.cn/jsfront/month/82796 JS前端開(kāi)發(fā)群月報(bào) 提交原則: 技...
閱讀 1915·2023-04-26 01:56
閱讀 3112·2021-11-18 10:02
閱讀 3049·2021-09-09 11:35
閱讀 1284·2021-09-03 10:28
閱讀 3408·2019-08-29 18:36
閱讀 2846·2019-08-29 17:14
閱讀 833·2019-08-29 16:10
閱讀 1616·2019-08-26 13:45