ES6之數(shù)組和對象的擴展

? ? ? ES6中數(shù)組的擴展主要基于...擴展運算符,對象的擴展則是基于它本身的屬性和簡寫上的擴展保屯。首先說一下都會涉及到的Iterator接口唉俗,Iterator是一種機制,是遍歷那些具有集合(Array,Object,Set,Map)性質(zhì)的對象的機制,使得可以對于不同的數(shù)據(jù)結(jié)構(gòu)有著統(tǒng)一的訪問機制配椭,它提供給我們可以獲取這些集合中屬性和值的接口虫溜,同時在瀏覽器上呈現(xiàn)出一種規(guī)律的集合形式,還有新的訪問方法類似股缸,for...in..,for...of....衡楞,簡而言之就是具有數(shù)組結(jié)構(gòu)或者類數(shù)組結(jié)構(gòu)或者可以遍歷的數(shù)據(jù)都可以說具有iterator接口。

? ? ? ES6數(shù)組的擴展體現(xiàn)在擴展運算符...敦姻,它是基于Iterator接口瘾境,就是說具有Iterator接口的數(shù)據(jù)才能運用...。...用于參數(shù)上可以將數(shù)組轉(zhuǎn)化成逗號分開的參數(shù)序列镰惦,...用于數(shù)組中可以將字符串和數(shù)組互相轉(zhuǎn)化迷守,...替代apply方法將fun.apply(num,arr)==>fun(...arr),...與解析賦值結(jié)合為數(shù)組賦值旺入,合并數(shù)組兑凿,...將類數(shù)組或者說是可以遍歷的對象轉(zhuǎn)化成真正的數(shù)組凯力,將map、set礼华、generator函數(shù)生成的對象轉(zhuǎn)化成數(shù)組咐鹤,...[]不產(chǎn)生任何效果。不過這些用途圣絮,需要自己的探索和發(fā)現(xiàn)祈惶。

? ? ? ? ?Array.from可以將類似數(shù)組的對象(阮大大的解釋是具有l(wèi)ength屬性的對象)和具有可遍歷接口的對象;它能夠?qū)⒕哂蠭terator接口的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為真正的數(shù)組扮匠。同時Array.from接受第二個參數(shù)類似map的作用即Array.from(obj,function(x){return x * x})==>Array.from(obj).map(function(x){return x * x});Array.of可以將一組值轉(zhuǎn)化成數(shù)組大致類似split;copyWithin(target,start,end)從start位置開始到end(end不存在就是到數(shù)組總長度)結(jié)束復制字符串替換到從target開始的位置然后返回當前數(shù)組( start,end為負值就表示倒數(shù)捧请,start默認為0,end默認為數(shù)組長度)棒搜;find找到第一個符合該條件的元素疹蛉,接受一個函數(shù)作為條件去查詢,找到了就是true否則是undefined帮非,findIndex呢是找到并返回第一個符合條件的元素的位置氧吐,如果不存在就是-1讹蘑,這就有點類似indexOf了末盔,不過它的使用方法和find一樣;fill填充數(shù)組座慰,也可以說是替換某個位置元素陨舱,當然如果補說具體位置的話,那就全給他替了版仔;includes 數(shù)組中是否包含某個元素類似indexof但是返回值不同游盲,而且相對比indeof更嚴格;直接使用Array(num)創(chuàng)建的數(shù)組里面的元素是空的沒有元素蛮粮,但是es6將它處理為undefined益缎,而es5則一般情況下會將它們給忽略掉。

? ? ? ? ?接下來說的是數(shù)組和對象擴展后都存在的新方法然想,entries(),keys(),values(),這些方法都是用來遍歷數(shù)組和對象的莺奔,entries()返回對應數(shù)組的index和value但是返回對應數(shù)組的key和value,keys就是返回數(shù)組的index和對象的key变泄,values就是返回對應位置的values令哟。

? ? ?對象的擴展提供了幾點便利,可以直接將某個變量寫到對象中妨蛹,其中變量名是key值屏富,變量值為value,當然如果有現(xiàn)成的key或者value另當別論蛙卤,我說的是{obj}狠半,當然也延伸到var o = {method(){}} ==>var o = {method:function(){}},反正就是怎么簡單怎么來噩死,能讓你看到基本認識就行,但是就是要簡單典予。擴展后對象的某個key值可以是表達式但是要用方括號擴起來(厲害了我的哥)甜滨,但是要是表達式表達key值還要做成又當key又當value是不可能的因為key一般是str這樣會造成數(shù)據(jù)出現(xiàn)錯誤;

? ? ? ?接下來是擴展后對象上屬性的改變瘤袖,首先是方法名name衣摩,傳統(tǒng)的普通函數(shù)name屬性獲取方法名,setter和getter函數(shù)的name則在對該方法的屬性描述對象上捂敌,bind生成的新函數(shù)name要在原函數(shù)名加bound艾扮,構(gòu)造函數(shù)生成的方法則需要加上個anoymous,至于symbol作為屬性的函數(shù)名則是symbol的描述(參數(shù))占婉;其次就是說說原來屬性的可枚舉性泡嘴,關(guān)于對屬性的描述可以具體看一下js高程三里的一章專門介紹屬性的描述,獲取的方法是getOwnPropertyDescriptor獲取屬性的屬性逆济,接著說它的枚舉性酌予,枚舉呢就是可遍歷,但是在屬性的屬性上有一項是禁止屬性被遍歷奖慌,可有的方法不同意啊抛虫,for...in..,object.keys,JSON.stringify,object.assign,其中assign只是拷貝對象自己的屬性原形鏈上的不考慮简僧,而這幾個不考慮可枚舉性的問題有時候會導致一些問題(挖個坑建椰,你們自己以后會碰到),ES6中class中的方法都是不可枚舉的。for...in,object.keys,getOwnPaopertyNames,getOwnPropertySymbols,reflect.ownKeys都可以獲取到對象的屬性只是獲取到的格式岛马,表現(xiàn)形式不同罷了棉姐,getOwnPropertyDescriptors一個getOwnPropertyDescriptor的集合版本;setPropertyOf設置一個對象的property啦逆,getPropertyOf獲取一個對象的property原型對象伞矩,對于設置對象的參數(shù),非對象轉(zhuǎn)化為對象夏志,轉(zhuǎn)化不了就報錯乃坤。

? ? ? 擴展方法,Object.is比較兩個值是否相等===盲镶,但是不同的是+0===-0侥袜,NaN!==NaN溉贿,object.is卻是相反枫吧;object.assign(target,...source)用于對象的可枚舉(可以遍歷到的)屬性合并,如果出現(xiàn)同名的屬性還會覆蓋,類似于淺拷貝(淺拷貝就是拷貝的是地址宇色,指針對數(shù)據(jù)的引用九杂,新數(shù)據(jù)會因為原來的數(shù)據(jù)變化而變化颁湖,深拷貝就是拷貝的是實實在在的數(shù)據(jù)),對于參數(shù)中非對象的數(shù)據(jù)例隆,如果在target位置就是能轉(zhuǎn)換轉(zhuǎn)換不能轉(zhuǎn)換就報錯甥捺,如果是source位置就是能轉(zhuǎn)換轉(zhuǎn)換不能轉(zhuǎn)換跳過,至于assign的用途就自己發(fā)掘吧镀层。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镰禾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子唱逢,更是在濱河造成了極大的恐慌吴侦,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坞古,死亡現(xiàn)場離奇詭異备韧,居然都是意外死亡,警方通過查閱死者的電腦和手機痪枫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門织堂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奶陈,你說我怎么就攤上這事易阳。” “怎么了尿瞭?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵闽烙,是天一觀的道長翅睛。 經(jīng)常有香客問我声搁,道長,這世上最難降的妖魔是什么捕发? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任疏旨,我火速辦了婚禮,結(jié)果婚禮上扎酷,老公的妹妹穿的比我還像新娘檐涝。我一直安慰自己,他們只是感情好法挨,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布谁榜。 她就那樣靜靜地躺著,像睡著了一般凡纳。 火紅的嫁衣襯著肌膚如雪窃植。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天荐糜,我揣著相機與錄音巷怜,去河邊找鬼葛超。 笑死,一個胖子當著我的面吹牛延塑,可吹牛的內(nèi)容都是我干的绣张。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼关带,長吁一口氣:“原來是場噩夢啊……” “哼侥涵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宋雏,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤独令,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后好芭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燃箭,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年舍败,在試婚紗的時候發(fā)現(xiàn)自己被綠了招狸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡邻薯,死狀恐怖裙戏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厕诡,我是刑警寧澤累榜,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站灵嫌,受9級特大地震影響壹罚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寿羞,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一猖凛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绪穆,春花似錦辨泳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至难菌,卻和暖如春试溯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扔傅。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工耍共, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烫饼,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓试读,卻偏偏與公主長得像杠纵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钩骇,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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