ES6 物件擴充套件

2021-10-08 01:17:35 字數 2931 閱讀 5018

var foo =

"bar"

;var baz =

; baz;

// // 等價於

var baz =

;function

f(x, y)

;// 等價於: return ;}f

(1,2

);//

var obj =

}// 等價於

var obj =

}

在es5中,定義物件的屬性有兩種方法

如果使用字面量方式定義物件,在es5中只能使用方法一,而在es6中可以使用方法二:

let yuan =

"monkey"

;let animal =

animal[

"type"];

// "animal"

animal[yuan]

;// "yuan is not monkey"

animal[

"monkey"];

// "yuan is not monkey"

屬性名定義方法:

let monkey =

} monkey.

yuan()

;// yuan is a monkey"

let monkey =

} monkey.yuan.name;

// "yuan"

因在es5中,並不能處理比較兩個值是否嚴格相等,對於nan,+0,-0等並不能做出嚴格相等來判斷。

object.is() 這個方法就是來彌補上述的缺陷的:

+

0===-0

;// true

nan===

nan;

// false

object.is(

+0,-

0);// false

object.is(

nan,

nan)

;// true

基本用法:

定義:將源物件(sourcen,不知乙個源物件)的所有可列舉屬性複製到目標物件上(target)。

使用方式:object.assign(target, source1, source2, …, sourcen)

let target =

;let s1 =

;let s2 =

; object.

assign

(target, s1, s2)

;//

注意點

1、如果目標物件與源物件用同名屬性,或多個源物件具有同名屬性,則後面的屬性會覆蓋前面的屬性:

let target2 =

;let s3 =

;let s4 =

; object.

assign

(target2, s3, s4)

;//

2、如果引數不是物件,則會先轉成物件,在返回:

typeof object.

assign(3

);// "object"

3、若引數中有undefined 或者 null,這兩個引數不能放在目標物件的位置,否則會報錯:

object.

assign

(undefined)

;// cannot convert undefined or null to object at function.assign ()

object.

assign

(null);

// cannot convert undefined or null to object at function.assign ()

4、除了字串會以陣列的形式複製到目標物件上,其他值都不會產生效果:

let a1 =

'yuan'

;let a2 =

true

;let a3 =11;

let a4 =

nan;

object.

assign

(, a1, a2, a3, a4)

;//

5、object.assign()這個方法是對物件引用的複製,即是淺複製,而不是深複製。這裡需要規避同名屬性替換帶來的問題:

var obj1 =};

var obj2 =};

object.

assign

(obj1, obj2)

;// }

obj1.a.b;

// "yuan"

基本用途

class

geo}

object.

assig

(someclass.prototype,

,anothermethod()

})

function

clone

(originobj)

, originobj)

;// 將原始物件複製給空物件

}

const mergeobjs =

const

defaults=;

function

processcontent

(options)

,defaults

, options)

;}

ES6 物件擴充套件

es6 允許直接寫入變數和函式,作為物件的屬性和方法 var key1 1 var bj var bz 方法的簡寫 var ob fn2 表示式還可以用於定義方法名。var lastword last word var a a first word hello a lastword world a ...

ES6物件擴充套件

es6允許直接寫入變數和函式,作為屬性名和方法 var a b var c c 如果屬性值與屬性名一樣,我們值寫屬性名就可以 方法簡寫 add add function 定義物件屬性有兩種方法 obj.name lijixuan 2obj name lijixuan 我們原本只能用識別符號定義屬性,...

ES6 物件擴充套件

物件擴充套件主要從四個方面開展 1.簡潔表示法 2.屬性表示式 3.擴充套件運算子 4.object新增方法 let es6 console.log es5,es6 object object 在es5中,我們去定義物件,多使用鍵值對的方式來定義,在es6中,我們直接使用變數名稱來定義就可以了。是不...