ES6

es6開發(fā)環(huán)境基本普及使用脏款,但是瀏覽器支持還不好围苫。所以在開發(fā)中使用es6的話,需要在開發(fā)時(shí)對(duì)其進(jìn)行編譯撤师,否則瀏覽器中運(yùn)行很容易出現(xiàn)問題剂府。

面試問題:

1、ES6模塊化如何使用剃盾,開發(fā)環(huán)境如何打包

答:ES6提供了import(導(dǎo)入)和export(導(dǎo)出)腺占,在使用時(shí)如果只導(dǎo)出一個(gè)模塊淤袜,可以用export default來定義,在導(dǎo)入時(shí)直接導(dǎo)入就好衰伯,如果在一個(gè)js文件中導(dǎo)出多個(gè)模塊铡羡,在引用的時(shí)候要通過import { 模塊名}來導(dǎo)入,多個(gè)模塊間用逗號(hào) “ 意鲸,” 來分隔烦周。如下所示:

util1.js


util1.js導(dǎo)出一個(gè)模塊

util2.js


導(dǎo)出多個(gè)模塊

main.js


導(dǎo)入一個(gè)模塊和導(dǎo)入多個(gè)模塊(通過{} 且用” ,“分隔)

開發(fā)環(huán)境對(duì)es6進(jìn)行編譯需要首先下載babel相關(guān)插件怎顾,如babel-core读慎、babel-preset-es2015、babel-preset-latest( npm i babel-core babel-preset-es2015 babel-preset-latest --save-dev ) 槐雾。然后新建.babelrc文件(內(nèi)容是一個(gè)對(duì)象)并且配置它的presets選項(xiàng)和plugins選項(xiàng)夭委。

1首先: npm init來創(chuàng)建package.json文件

2接著:下載依賴:

cnpm下載速度更快

3接著:創(chuàng)建.babelrc文件

配置babelrc文件

4接著:全局下載babel-cli?

全局下載
查看版本看是否安裝成功

5:創(chuàng)建index.js文件并編寫es6代碼

編寫了一個(gè)箭頭函數(shù)

6:編譯 通過babel index.js來編譯


會(huì)發(fā)現(xiàn)編譯后的es6代碼會(huì)把轉(zhuǎn)換成es5的格式

其他結(jié)局方法:

webpack:? 下載babel-loader (cnpm i babel-loader --save-dev),然后配置webpack.config.js文件的module屬性的rules里對(duì)于js的處理

module:{

rules:[

{? test: /\.js$/ , loader: 'babel-loader'? }

]

}

rollup

2桐磁、Class和普通構(gòu)造函數(shù)有何區(qū)別

js構(gòu)造函數(shù)語法:


function MathHandle(x,y){ //定義了一個(gè)構(gòu)造函數(shù)

this.x=x;

this.y=y;

}M

MathHandle.prototype.add=function(){? ?//為構(gòu)造函數(shù)添加方法

return this.x+this.y;

}

var m=new MathHandle(1,2);? ?//實(shí)例構(gòu)造函數(shù)對(duì)象

m.add();? ?//調(diào)用實(shí)例的add方法

Class語法:


class MathHandle{

constructor(x,y){

this.x=x; this.y=y;

}

add(){

return this.x+this.y;

}

}

const m=new MathHandle(1,2);

m.add();

js繼承


function Animal(){

this.eat=function(){? console.log(' animal? eat '); }

}

function Dog=function(){

this.bark=function(){? console.log('doy bark'); }

}

Dog.prototype=new Animal(); //通過指定一個(gè)構(gòu)造函數(shù)的原型是另一個(gè)構(gòu)造函數(shù)的實(shí)例來形成繼承關(guān)系

var hashiqi=new Dog(); //hashiqi是Dog構(gòu)造函數(shù)的實(shí)例锐想,所以可以調(diào)用bark方法喧务,又由于Dog構(gòu)造函數(shù)繼承自Animal構(gòu)造函數(shù)唆迁,所以hashiqi還可以調(diào)用eat方法

hashiqi.eat();

hashiqi.bark();

class 繼承


class Animal{

constructor(name ){ this.name=name; }

eat(){

console.log(`${this.name} eat`);

}

}

class Dog extends Animal(){ //class中通過extends來實(shí)現(xiàn)繼承芹扭,constructor中通過super方法來傳遞參數(shù)篮撑;

constructor (name){

super(name);

this.name=name;

}

bark(){

console.log(`${this.name}? bark`)

}

}

const hashiqi=new Dog('哈士奇');

hashiqi.eat();

hashiqi.bark();

答:class在語法上更加貼合面向?qū)ο蟮膶懛?class實(shí)現(xiàn)繼承更加易讀易理解纹安;更易于寫java等后端語言的使用毛俏;本質(zhì)還是語法糖幅恋,使用prototype杏死。

3、Promise的基本使用和原理

callback hell:


loadImg(src,callback,fail){

var img=document.createElement('img');

img.onload=function(){callback(img);}

img.onerror=function(){fail()}

img.src=src;

}

var src=https://www.imooc.com/static/img/index/logo.png;

loadImg(src,function(img){

console.log(img.width);

},function(){

console.log('failed');

}}

promise 語法


function loadImg(){//通過new Promise()來定義一個(gè)promise對(duì)象捆交,里面是一個(gè)函數(shù)淑翼,賦值要傳的回調(diào),在調(diào)用的時(shí)候通過then方法傳入要調(diào)用的回調(diào)函數(shù)

const promise=new Promise(function(resolve,reject){

var img=document.createElement('img');

img.onload=function(img){

resolve(img);

}

img.onerror=function(){

reject();

}

img.src=src;

})

return promise;

}

var src=https://www.imooc.com/static/img/index/logo.png;

var result=loadImg(src);

result.then(function(img){

console.log(img.width);

},function(){

console.log('error');

})

result.then(function(img){

console.log(img.height);

})

4品追、ES6其他常用功能

let/const


答:let定義變量玄括,const定義常量,不能改變肉瓦。

多行字符串/模板變量


const name='guogaigai',age=20;

const html=`

<div>

? ? ? ? <p>${name} 現(xiàn)在</p>

? ? ? ? <p>${age}歲了</p>

<div>`;

解構(gòu)賦值


const arr=['aaa','bbb','ccc','ddd','eee'];

const [x,y,z]=arr;

console.log(x); //'aaa'

console.log(y); //'bbb'

console.log(z); //'ccc'

塊級(jí)作用域


const obj={a:100,b:20};

for (let item in obj){

console.log(item); //es6新增了塊級(jí)作用域遭京,在這里定義的item就處于for in循環(huán)的塊級(jí)作用域中,在外面是訪問不到的泞莉。

}

console.log(item); //undefined

函數(shù)默認(rèn)參數(shù)


function (a,b=0){}

箭頭函數(shù)


const arr=[1,2,3];

arr.map(item=>item+1);

arr.map((item)=>{

console.log('es6',this);

return item+1;

})

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哪雕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鲫趁,更是在濱河造成了極大的恐慌斯嚎,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異堡僻,居然都是意外死亡糠惫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門钉疫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硼讽,“玉大人,你說我怎么就攤上這事陌选±碇#” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵咨油,是天一觀的道長您炉。 經(jīng)常有香客問我,道長役电,這世上最難降的妖魔是什么赚爵? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮法瑟,結(jié)果婚禮上冀膝,老公的妹妹穿的比我還像新娘。我一直安慰自己霎挟,他們只是感情好窝剖,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酥夭,像睡著了一般赐纱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熬北,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天疙描,我揣著相機(jī)與錄音,去河邊找鬼讶隐。 笑死起胰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巫延。 我是一名探鬼主播效五,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烈评!你這毒婦竟也來了火俄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤讲冠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后适瓦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竿开,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谱仪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了否彩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯攒。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖列荔,靈堂內(nèi)的尸體忽然破棺而出敬尺,到底是詐尸還是另有隱情,我是刑警寧澤贴浙,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布砂吞,位于F島的核電站,受9級(jí)特大地震影響崎溃,放射性物質(zhì)發(fā)生泄漏蜻直。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一袁串、第九天 我趴在偏房一處隱蔽的房頂上張望概而。 院中可真熱鬧,春花似錦囱修、人聲如沸赎瑰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽餐曼。三九已至,卻和暖如春啤咽,著一層夾襖步出監(jiān)牢的瞬間晋辆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國打工宇整, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓶佳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓鳞青,卻偏偏與公主長得像霸饲,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子臂拓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • es6總結(jié) 往期文章 ES5總結(jié) 1.es6簡介 回顧javascrip組成:核心(ECMAScript)由ECM...
    理想三旬7閱讀 591評(píng)論 0 5
  • 更合理的方式寫 JavaScript 原文看 這里 厚脉,收錄在此為便于查閱。 類型 1.1 基本類型:直接存取胶惰。字符...
    殺破狼real閱讀 8,822評(píng)論 0 6
  • 兼容性 IE:可以看到IE6傻工,IE7是完全不支持的。而IE8是只支持一些內(nèi)容,參考引用4中捆,IE9是大部分支持鸯匹,支持...
    菜園被偷了閱讀 440評(píng)論 0 0
  • ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標(biāo)準(zhǔn)。因?yàn)楫?dāng)前版本的ES6是在2015...
    陳大沖閱讀 789評(píng)論 0 0
  • babel轉(zhuǎn)碼 在項(xiàng)目安裝babel-cli npm install --global babel-cli ba...
    tency小七閱讀 409評(píng)論 0 0