ES6的一些筆記(六)

函數(shù)

新特性


新增參數(shù)默認(rèn)值

在寫函數(shù)的時候可以給形參所在的變量分配一個默認(rèn)值损拢,如果在調(diào)用函數(shù)的時候撒犀,沒有寫入實參福压,那么形參變量中的值就是默認(rèn)值或舞。
默認(rèn)值會讓functionlength屬性失真,在默認(rèn)值后包含默認(rèn)值的形參將不會計入length屬性,并且嚴(yán)格模式不可以使用嚷那。

function test(x,y=10) {    
return x + y;
}
console.log(test())   // NaN 因為x沒有值 而y是一個數(shù)字
console.log(test(3,3))  // 6
console.log(test(3));   // 13
新增rest參數(shù)

寫法...vals胞枕,vals只是一個變量名魏宽,寫什么都可以,記得放在參數(shù)末尾也就是最后一個參數(shù)决乎,不然會報錯队询。
rest參數(shù)就是一個數(shù)組构诚。嚴(yán)格模式不可以使用。

function testEach(...vals) {    
    vals.forEach(function (val) {        
        console.log(val);    
    })
}
function test(...vals) {    
    for (var val in vals){        
        console.log(vals[val]);    
    }
}
test("呵","呵")   // 呵送膳,呵
testEach(1,2,3,4)  // 1,2,3,4
新增擴展運算符...

...可以把一個數(shù)組轉(zhuǎn)化為序列的方式,不止是數(shù)組偽數(shù)組也可以碌补。
嚴(yán)格模式不可以使用。

function test(a,b,c) {    
  return a+b+c;
}
console.log(test(...[1,2,3]));   // 6
函數(shù)的name屬性

name返回的是一個函數(shù)的名稱

function test() {
}
var arr = new Array();
console.log(test.name)   // test
console.log(arr.push.name)     // push 
函數(shù)的新寫法“箭頭函數(shù)”

箭頭函數(shù)可以簡化原先函數(shù)的書寫方式照藻,實例如下袜啃。

var myparseInt =  num => Number.parseInt(num)
var n = myparseInt("72b");
console.log(n); // 72

如上代碼num => Number.parseInt(num)相當(dāng)于一個匿名函數(shù),而myparselnt則相當(dāng)于一個函數(shù)的名稱,也可以說是一個變量接收了一個匿名函數(shù)那么久可以通過這個變量來調(diào)用函數(shù)幸缕,匿名函數(shù)如果放到ES5中代碼如下:

var  myparseInt  =function(num) {    
    return Number.parseInt(num)
}

多個參數(shù)或者沒有參數(shù)可以用()來表示參數(shù)的地方如:

var test=  ()=> "返回值"
//等同于
var  test  =function() {    
    return "返回值"
}

如果返回值大于一條語句要用{}包裹起來囊骤。

var test=  (num1,num2)=> {    
    var n = num1 + num2;   
    return n/10;
}
console.log(test(30,40))  // 70

箭頭函數(shù)里面根本沒有自己的this晃择,而是引用外層的this。

function fn() {
    return () =>{
        return () =>{
            return this.name
        }
    }
}

var jack = fn.call({"name":"jack"})

/** 
  獲取的jack
  function () {
        return function () {
            return _this.name;
        };
    }
*/
console.log(jack) 

console.log("---" + jack.name)  // ---
console.log(jack.call()()) // jack
console.log(jack.call({"name":"jack2"})()) // jack
var jack2 =jack.call({"name":"jack2"});
console.log("---" + jack2.name) // ---
/**
  jack2
  function () {
            return _this.name;
  }
*/
console.log(jack2)
console.log(jack2()) // jack

對象

新特性


對象屬性的簡易寫法
// 變量
var name = "jack";
var age = 18;
// 將變量賦值給對象
var obj = {name};
obj = {age}
console.log(obj) // Object {age: 18} 會覆蓋上一個name
obj = {name,age} 
console.log(obj) // Object {name: "jack", age: 18} 這樣就可以不覆蓋了
對象的方法簡易寫法(五星好評)
var p = {
    run(){
        console.log("跑");
    }
}
p.run()
屬性名與方法名可以利用表達(dá)式
var n = "name"
var r = "run";

var obj = {
    [n] : "jack",
    [r](){
        return "跑";
    }
}
console.log(obj.name)  // jack
console.log(obj.run()) // 跑
Object.is()

判斷2個值是否相等

var a = NaN;
var b = NaN;

console.log(Object.is(a,b)) // true
Object.assign()

合并對象也物,包含屬性和方法的合并,第一個參數(shù)是主對象宫屠,后面的是要合并的對象。

var obj = {};
var car = {
    run(){
        return "跑";
    }
}
var dog = {
    eat(){
        return "吃";
    }
}
Object.assign(obj,car,dog);
console.log(obj.run());  // 跑
console.log(obj.eat());  // 吃
Object的描述對象Descriptor

Object.getOwnPropertyDescriptor(obj,key)獲取這個描述對象

var car = {
    run(){
        return "跑";
    }
}
/**
  描述對象 enumerable 決定是否是可以在循環(huán)中被遍歷出的屬性
  Object
    configurable: true
    enumerable: true
    value: run()writable: true
    __proto__: Object
*/
console.log(Object.getOwnPropertyDescriptor(car,"run"));
Object.keys(obj)

返回由對象所有鍵所組成的數(shù)組

var car = {
    run(){
        return "跑";
    }
}
var arr = Object.keys(car)
console.log(arr); //  ["run"];
Object.values(obj)

返回由對象所有值所組成的數(shù)組,其特性與keys一樣

var test = {name:"test"}
var vals = Object.values(test)

console.log(vals) // ["test"]
Object.entries(obj)

這個返回值有2種情況,當(dāng)對象只有一個鍵值對的時候只會返回一個一維數(shù)組,0下標(biāo)的是key1下標(biāo)的是val,但是當(dāng)這個對象有多個鍵值對的時候,所返回的就是一個二維數(shù)組,每一個鍵值對就是一個一維數(shù)組.

var test = {name:"test"}
test.age = 12;

var entries = Object.entries(test)

console.log(entries) // [["name","test"],["age",12]]
Object.getOwnPropertyNames(obj)

表面看和keys這個方法區(qū)別不大,但是如果是enumerable: true描述對象中的這個屬性為否在keys中是不可能遍歷出的但是在這里就可以遍歷了

var arr = [1];
arr.name = "數(shù)組";

var keysArr = Object.keys(arr)
var getOwnPropertyNamesArr = Object.getOwnPropertyNames(arr);
console.log(keysArr); // ["0", "name"]
console.log(getOwnPropertyNamesArr) // ["0", "length", "name"]
Reflect.ownKeys(obj)

返回值為數(shù)組,包含所有的key,不論enumerableSymbol

var arr = [1];
arr.name = "數(shù)組";
var keysArr = Reflect.ownKeys(arr)
console.log(keysArr); // ["0", "length", "name"]
Object.setPrototypeOf(obj,proto)

可以設(shè)置對象中的proto屬性

var car = {
    run(){
        return "跑";
    }
}
console.log(car);
/**
  結(jié)果如下:
Object
run: run()
__proto__:Object
__defineGetter__:__defineGetter__()
__defineSetter__:__defineSetter__()
__lookupGetter__:__lookupGetter__()
__lookupSetter__: __lookupSetter__()
constructor: Object()
hasOwnProperty: hasOwnProperty()
isPrototypeOf:isPrototypeOf()
propertyIsEnumerable:propertyIsEnumerable()
toLocaleString: toLocaleString()
toString: toString()
valueOf: valueOf()
get __proto__: __proto__()
set __proto__: __proto__()
*/


var car = {
    run(){
        return "跑";
    }
}
var test = {name:"test"}
Object.setPrototypeOf(car,test);
console.log(car) 
/**
  Object
      run: run()
      __proto__: Object
          name: "test"
          __proto__: Object
              __defineGetter__:__defineGetter__()
              __defineSetter__:__defineSetter__()
              __lookupGetter__:__lookupGetter__()
              __lookupSetter__: __lookupSetter__()
              constructor: Object()
              hasOwnProperty: hasOwnProperty()
              isPrototypeOf:isPrototypeOf()
         propertyIsEnumerable:propertyIsEnumerable()
              toLocaleString: toLocaleString()
              toString: toString()
              valueOf: valueOf()
              get __proto__: __proto__()
              set __proto__: __proto__()
*/
Object.getPrototypeOf(obj)

取出一個對象的proto屬性 和setPrototypeOf對應(yīng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滑蚯,一起剝皮案震驚了整個濱河市浪蹂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌告材,老刑警劉巖坤次,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異斥赋,居然都是意外死亡缰猴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門疤剑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滑绒,“玉大人,你說我怎么就攤上這事隘膘∫晒剩” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵弯菊,是天一觀的道長纵势。 經(jīng)常有香客問我,道長管钳,這世上最難降的妖魔是什么钦铁? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮才漆,結(jié)果婚禮上牛曹,老公的妹妹穿的比我還像新娘。我一直安慰自己栽烂,他們只是感情好躏仇,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腺办,像睡著了一般焰手。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怀喉,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天书妻,我揣著相機與錄音,去河邊找鬼。 笑死躲履,一個胖子當(dāng)著我的面吹牛见间,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播工猜,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼米诉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篷帅?” 一聲冷哼從身側(cè)響起史侣,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎魏身,沒想到半個月后惊橱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡箭昵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年税朴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片家制。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡正林,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慰丛,到底是詐尸還是另有隱情卓囚,我是刑警寧澤瘾杭,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布诅病,位于F島的核電站,受9級特大地震影響粥烁,放射性物質(zhì)發(fā)生泄漏贤笆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一讨阻、第九天 我趴在偏房一處隱蔽的房頂上張望芥永。 院中可真熱鬧,春花似錦钝吮、人聲如沸埋涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棘催。三九已至,卻和暖如春耳标,著一層夾襖步出監(jiān)牢的瞬間醇坝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工次坡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呼猪,地道東北人画畅。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像宋距,于是被迫代替她去往敵國和親轴踱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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

  • 1.屬性的簡潔表示法 允許直接寫入變量和函數(shù) 上面代碼表明谚赎,ES6 允許在對象之中寇僧,直接寫變量。這時沸版,屬性名為變量...
    雨飛飛雨閱讀 1,135評論 0 3
  • 三嘁傀,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進,只要將碼點放入大括號视粮,就能正確解讀該字符细办。有了這...
    eastbaby閱讀 1,534評論 0 8
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,234評論 0 4
  • 我們已經(jīng)學(xué)過四季這篇課文。課文內(nèi)容是“草芽尖尖蕾殴,他對小鳥說:“我是春天笑撞。”荷葉圓圓钓觉,他對青蛙說:“我是夏天茴肥。”谷...
    張佳藝我的寶貝閱讀 309評論 0 2
  • 明天是10月5日,星期三批幌,對于很多人來說础锐,不過是國慶小長假中平凡的一天。但荧缘,對于我來說皆警,這一天到來,帶來的是我與她...
    學(xué)生澤平閱讀 339評論 0 1