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屬性不是在該方法上面,而是該方法的屬性的描述物件的get和set屬性上面,返回值是方法名前加上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 關於物件新增的方...