ES6

ES6


箭頭函數(shù)甲锡、this指向問題


function foo(a,b){

return a+b;

}

console.log(3,2);

//用箭頭函數(shù)簡(jiǎn)寫

let foo = (a,b) => a + b;

console.log(foo(13,2));

箭頭函數(shù)就是用來承接一堆代碼的
箭頭函數(shù)更加輕量級(jí),性能會(huì)更好

  • 箭頭函數(shù)特性

    1. 不支持arguments關(guān)鍵字

    2. this指向生而固定

    3. 箭頭函數(shù)在哪聲明唯笙,this就指向哪里

    
    let obj = {
    
        fn : () => {
    
            console.log(this,"外部函數(shù)指向window");
    
            //Window "外部函數(shù)指向window"
    
            let foo = () => {
    
                console.log(this,"內(nèi)部函數(shù)指向window");
    
                //Window "內(nèi)函數(shù)指向window"
    
            }
    
            foo();
    
        },
    
        //這里如果改成以下形式會(huì)對(duì)外部和內(nèi)部函數(shù)的this指向造成影響
    
        //第二種
    
        //  fn : function(){
    
        //  console.log(this)
    
        //  //{fn: ?, fnn: ?}fn: ? ()fnn: ? ()__proto__: Object
    
        //  let foo = () => {
    
        //  console.log(this)
    
        //  //{fn: ?, fnn: ?}fn: ? ()fnn: ? ()__proto__: Object
    
    //  }
    
    //  }
    
        //第三種
    
        //  fn : function(){
    
        //  console.log(this)
    
        //  //{fn: ?, fnn: ?}fn: ? ()fnn: ? ()__proto__: Object
    
        //  let foo = function(){
    
        //  console.log(this)
    
        //  //Window
    
    //  }
    
    //  }
    
        fnn : function(){
    
            console.log(this);
    
        }.bind(this)
    
        //bind()方法創(chuàng)建一個(gè)新的函數(shù),在調(diào)用時(shí)設(shè)置this關(guān)鍵字為提供的值。
    
    }
    
    obj.fn();
    
    obj.fnn();
    
    

    分析:

    1. 第一種情況下的this指向箭頭函數(shù)聲明處fn : () =>{} fn是全局變量酱畅,所以this指向window解虱,而第二個(gè)this則跟第一個(gè)this指向相同攘须。

    2. 第二種情況下 fn : function(){} 此時(shí)沒有了箭頭函數(shù),所以第一個(gè)this指向調(diào)用其所在函數(shù)的對(duì)象fn殴泰,第二個(gè)this則也指向fn于宙。

    3. 第三種情況下第一個(gè)this指向fn,第二個(gè)this指向window悍汛。

  • 箭頭函數(shù)的this指向是聲明箭頭函數(shù)時(shí)的this指向

  • this指向調(diào)用其所在函數(shù)的對(duì)象捞魁,而且是離誰近就是指向誰;構(gòu)造函數(shù)下离咐,this與被創(chuàng)建的新對(duì)象綁定谱俭;DOM事件,this指向觸發(fā)事件的元素宵蛀;內(nèi)聯(lián)事件分兩種情況昆著,bind綁定,call & apply 方法等


構(gòu)造函數(shù)


function foo(){

    console.log("helllo");

}

var value = foo();  //函數(shù)

var obj = new foo();    //構(gòu)造函數(shù)

console.log(value,obj)

  • 函數(shù)返回值 => return 關(guān)鍵字返回的內(nèi)容0

  • 構(gòu)造函數(shù)返回值 => 根據(jù)構(gòu)造函數(shù)構(gòu)造的對(duì)象foo()

  • 注意 箭頭函數(shù)不能當(dāng)作構(gòu)造函數(shù)

some( )方法


var arr = [1,23,4,5,3,2,42];

var res = arr.some(item => >6);

console.log(res);

//true

  • some( )方法測(cè)試是否至少有一個(gè)元素通過有提供的函數(shù)實(shí)現(xiàn)的測(cè)試术陶。

  • 注意 對(duì)于放在空數(shù)組的任何條件凑懂,此方法返回false。

ES6中的字符串拼接


//es6中字符串拼接用${變量名}的方式引用變量

//``里的`要用\`轉(zhuǎn)義

var value = "hello world";

var html = `<ul>

                <li>${value}</li>

                <li>\`</li>

                <li>hello</li>

                <li>hello</li>

                <li>hello</li>

                <li>hello</li>

                <li>hello</li>

                <li>hello</li>

                <li>hello</li>

                <li>hello</li>

</ul>`

//ES6中``內(nèi)的所有東西都被解析為字符串梧宫,相對(duì)于ES5的字符串拼接來說更為方便


模板引擎

數(shù)據(jù)驅(qū)動(dòng)思想

目標(biāo):只更改數(shù)據(jù)接谨,可以得到不同的頁(yè)面渲染。
維護(hù)的內(nèi)容:1.html塘匣,js脓豪,css => json數(shù)據(jù)

<script type="text/html"> 的作用是存儲(chǔ)字符串模板


//如何獲取模板字符串

//1.放在script => text / html 之中的字符串

//2.定義語法規(guī)則(artTemplate / ejs)

//2.1 JS代碼放在哪里?

//2.2 輸出的變量放在哪里忌卤?

//3.區(qū)分正則

//3.1 輸出語句正則 => /<%=(.+?)%>/g

//3.2 JS語句的正則 => /<%([\s\S]+?)%>/g

//[\s\S] => 可以匹配 \n \r 特殊字符的寫法

//4.拼接

//設(shè):x,y x => 輸出語句; y => js語句;

//4.1 echo函數(shù) => 字符串拼接函數(shù);

var html=  "";

function echo(arg){

    html += arg;

}

<ul>

    y

<li> x </li>

y

</ul>

//x =>    <li>`) \n echo( x ); \n echo(`</li>

// y =>            `); \n    y  \n echo ('

//5. eval => 用eval將處理好的代碼進(jìn)行執(zhí)行扫夜、拼接字符串得到的結(jié)果


ES6中的新工具

數(shù)組、對(duì)象的擴(kuò)展

Array.from() 方法從一個(gè)類似數(shù)組或可迭代對(duì)象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例。


console.log(Array.from('foo'));

//Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));

//Array [2, 4, 6]

Object.assign :一個(gè)向前合并對(duì)象的方法: Object.assign() 方法用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象笤闯。它將返回目標(biāo)對(duì)象现拒,Object.assign方法的第一個(gè)參數(shù)是目標(biāo)對(duì)象,后面的參數(shù)都是源對(duì)象望侈。


var obj1 = {a : 1,b : 2,c : 3}

var obj2 = {d : 1,e : 2,f : 3}

            var obj3 = Object.assign(obj1,obj2);

//將obj2復(fù)制到obj1后面印蔬,obj1成為一個(gè)新的對(duì)象數(shù)組,obj2不變

            console.log(obj3 , obj1)

Object.keys(obj) ES2017 引入了跟Object.keys配套的Object.valuesObject.entries脱衙,作為遍歷一個(gè)對(duì)象的補(bǔ)充手段侥猬,供for...of循環(huán)使用。


let {keys, values, entries} = Object;

let obj = { a: 1, b: 2, c: 3 };

for (let key of keys(obj)) {

  console.log(key);

  // 'a', 'b', 'c'

}

for (let value of values(obj)) {

  console.log(value);

  // 1, 2, 3

}

for (let [key, value] of entries(obj)) {

  console.log([key, value]);

  // ['a', 1], ['b', 2], ['c', 3]

}

Array.prototype.flat()用于將嵌套的數(shù)組“拉平”捐韩,變成一維的數(shù)組退唠。該方法返回一個(gè)新數(shù)組,對(duì)原數(shù)據(jù)沒有影響荤胁。


[1, 2, [3, 4]].flat()

// [1, 2, 3, 4]

//flat()默認(rèn)只會(huì)“拉平”一層瞧预,如果想要“拉平”多層的嵌套數(shù)組,可以將flat()方法的參數(shù)寫成一個(gè)整數(shù)仅政,表示想要拉平的層數(shù)垢油,默認(rèn)為1。若參數(shù)為Infinity圆丹,則無論多少嵌套都會(huì)被拉伸為一維數(shù)組

[1, 2, [3, [4, 5]]].flat()

// [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)

// [1, 2, 3, 4, 5]

Symbol(name) 的作用是在key值相同的情況下使用assign方法不會(huì)導(dǎo)致前面的被覆蓋掉


var obj1={

    [Symbol("name")]:"111";

}

var obj2={

    [Symbol("name")]:"222";

}

Object.assign(obj1,obj2);

console.log(obj1);

//{Symbol(name): "111", Symbol(name): "222"}

//如果不用Symbol方法滩愁,結(jié)果輸出是 {Symbol(name): "222"}

//作為字典量存在切不會(huì)導(dǎo)致key值重復(fù);

const size = {

    XS : Symbol("XS"),

    S : Symbol("S")

}

let close  = {

    [size.XS] : 1

}

console.log(close);

//{Symbol(XS): 1}

console.log(close[size.XS]);

//1

Set、Map的作用


//Set自動(dòng)去重

var set = new Set([1,2,3,4,5,5,6,7,8]);  // key值 和 value值一樣;

console.log(set);

var set = new Set([1,2,3,4,5,5,6,7,8]);

// 增刪改查;

set.add(123);

console.log(set);

//Set(9) {1, 2, 3, 4, 5, 6, 7, 8, 123}

//Set可以用for...of循環(huán)進(jìn)行遍歷辫封,唯一的區(qū)別是keys()是對(duì)鍵名的遍歷硝枉、values()是對(duì)鍵值的遍歷,entries()是對(duì)鍵值對(duì)的遍歷倦微。

for(let value of set.entries()){

    console.log(value);

    //[1, 1][2, 2][3, 3][4, 4][5, 5][6, 6][7, 7][8, 8][123, 123]

}

set.delete(3);//刪除key為3的元素

set.clear();//情空數(shù)組

var map = new Map();

map.set("key","value");

console.log(map.keys());

console.log(map.values());

//Map可以將key和value獨(dú)立的取出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妻味,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子欣福,更是在濱河造成了極大的恐慌责球,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劣欢,死亡現(xiàn)場(chǎng)離奇詭異棕诵,居然都是意外死亡裁良,警方通過查閱死者的電腦和手機(jī)凿将,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來价脾,“玉大人牧抵,你說我怎么就攤上這事。” “怎么了犀变?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵妹孙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我获枝,道長(zhǎng)蠢正,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任省店,我火速辦了婚禮嚣崭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘懦傍。我一直安慰自己雹舀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布粗俱。 她就那樣靜靜地躺著说榆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寸认。 梳的紋絲不亂的頭發(fā)上签财,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音偏塞,去河邊找鬼荠卷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛烛愧,可吹牛的內(nèi)容都是我干的油宜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怜姿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼慎冤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沧卢,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蚁堤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后但狭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體披诗,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年立磁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呈队。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唱歧,死狀恐怖宪摧,靈堂內(nèi)的尸體忽然破棺而出粒竖,到底是詐尸還是另有隱情,我是刑警寧澤几于,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布蕊苗,位于F島的核電站,受9級(jí)特大地震影響沿彭,放射性物質(zhì)發(fā)生泄漏朽砰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一喉刘、第九天 我趴在偏房一處隱蔽的房頂上張望锅移。 院中可真熱鬧,春花似錦饱搏、人聲如沸非剃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)备绽。三九已至,卻和暖如春鬓催,著一層夾襖步出監(jiān)牢的瞬間肺素,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工宇驾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倍靡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓课舍,卻偏偏與公主長(zhǎng)得像塌西,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筝尾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359