浅学es6对象的扩展

2017-12-01  本文已影响0人  yfsola

1.属性的简介表示法

const foo ='bar' 

const baz = {foo}

baz //{foo:'bar'}

//等同于baz = {foo:foo}

2.属性名表达式

let lastWord ='last word'

const a= {

'first word':'hello',   

 [lastWord]:'world'} 

a['first word']

}

// 'hello'a[lastWord]

// 'world'a['last word']

// 'world'

注意属性名表达式于简介表达式,不能同时使用

//报错 

const foo ='bar' 

const bar ='abc' 

const baz = {[foo]}

//正确

const foo ='bar';

const baz = {[foo]:'abc'}

3.方法name属性

函数name属性,返回函数名

4.Object.is()

比较两个值是否严格相等,相当于(===)

5.Object.assign()

用于对象的合并

const target ={a:1}

const source1 ={b:2} 

const source2 ={c:3}

Object.assign(target,source1,source2)

target//{a:1,b:2,c:3}

注意如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性

克隆对象

function clone(origin) { returnObject.assign({},origin); }

属性的遍历 ES6一共有五种方法可以遍历对象的属性

(1)for ... in

循环遍历对象自身和继承的可枚举属性

(2)Object.keys(obj)

返回一个数组,包括对象自身的(不可继承的)所有可枚举属性(不含Symbol属性)的键名

(3)Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。

(4)Object.getOwnPropertySymbols(obj)

返回一个数组,包含对象自身的所有 Symbol 属性的键名。

Reflect.ownKeys(obj)

返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。

4.__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()

下面代码将proto对象设为obj对象的原型,所以obj对象可以读取proto对象的属性

let proto = {}

let obj = {x:10}

Object.setPrototypeOf(obj,proto);

proto.y =20

proto.z =40

obj.x// 10

obj.y// 20

obj.z// 40

5.super关键字

关键字super,指向当前对象的原型对象

注意super关键字表示原型对象是,之恩给你用在对象的方法之中,用在其他地方都会报错

上一篇下一篇

猜你喜欢

热点阅读