ES6 物件擴充套件

2021-07-28 02:46:20 字數 2325 閱讀 8445

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['last word'] // "world"

屬性名表示式與簡潔表示法,不能同時使用,會報錯。

屬性名表示式如果是乙個物件,預設情況下會自動將物件轉為字串[object object],這一點要特別小心。

var key=

var obj =

//

物件的方法使用了取值函式(getter)和存值函式(setter),則name屬性不是在該方法上面,而是該方法的屬性的描述物件的getset屬性上面,返回值是方法名前加上get和set

var obj = ,

set foo(x) ,

'title':'obj title'

}; obj.title//'obj title'

obj.foo//undefined

var des=object.getownpropertydescriptor(obj, 'foo')

//

es5比較兩個值是否相等,只有兩個運算子:」== 「和」===」。

缺點,前者會自動轉換資料型別,後者的nan不等於自身,以及+0等於-0

es6提出「same-value equality」(同值相等)演算法,它與「===」用法一致

object.is(+0,-0)

false

> 0===-0)

...> 0===-0

true

object.is(nan,nan)

es5 部署object.is()

object.defineproperty(object, 'is', 

// 針對nan的情況

return x !== x && y !== y;

},configurable: true,

enumerable: false,

writable: true

});

object.assign方法用於物件的合併,將源物件(source)的所有可列舉屬性,複製到目標物件(target)。

var target = ;

var source1 = ;

var source2 = ;

object.assign(target, source1, source2);

target //

ps

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

2. object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果源物件某個屬性的值是物件,那麼目標物件拷貝得到的是這個物件的引用。

es6一共有5種方法可以遍歷物件的屬性。

(1)for…in

for…in迴圈遍歷物件自身的和繼承的可列舉屬性(不含symbol屬性)。

(2)object.keys(obj)

object.keys返回乙個陣列,包括物件自身的(不含繼承的)所有可列舉屬性(不含symbol屬性)。

(3)object.getownpropertynames(obj)

object.getownpropertynames返回乙個陣列,包含物件自身的所有屬性(不含symbol屬性,但是包括不可列舉屬性)。

(4)object.getownpropertysymbols(obj)

object.getownpropertysymbols返回乙個陣列,包含物件自身的所有symbol屬性。

(5)reflect.ownkeys(obj)

reflect.ownkeys返回乙個陣列,包含物件自身的所有屬性,不管是屬性名是symbol或字串,也不管是否可列舉。

以上的5種方法遍歷物件的屬性,都遵守同樣的屬性遍歷的次序規則。

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中,我們直接使用變數名稱來定義就可以了。是不...

ES6 物件擴充套件

es6對物件進行了一系列的擴充套件,其中包括書寫方式及函式 1 物件簡寫 2 可計算屬性 let name angela let front lee let obj 等同於 getname function front name name 可擴充套件屬性 obj.getname 3 關於物件新增的方...