【ES6】第九章 对象的扩展

第9章 对象的扩展

1. 属性的简洁表示法

ES6允许直接写入变量和函数做为对象的属性和方法。这样书写更加简洁。

var foo='bar';

var baz={foo};
//等同于
var baz={foo:'bar'};

以上表示,ES6允许在对象中只写属性名,不写属性值。这里,属性值 等于 属性名所代表的变量。
除了属性可以简写,方法也可以简写。

var o = {
    method() {
        return "hello";
    }
}
//等同于
var o = {
    method:function() {
        return "hello";
    }
}

如果某个方法的值是一个Generator函数,则其前面需要加上星号。

4. Object.is()

Object.is用来比较两个值是否严格相等。它与(===)的行为基本一致。

不同之处:

+0 === -0; //true
NaN ===NaN; //false
Object.is(+0,-0); //false
Object.is(NaN,NaN); //true

5. Object.assign()

**Object.assign方法用于将源对象的所有可枚举属性复制到目标对象**。它至少要有两个对象作为参数。第一个参数是目标对象,后面都是源对象。只要有一个参数不是对象,都会报错。
var a={a:1,b:1};
var b={b:2,c:2};
var c={c:3};
Object.assign(a,b,c);//{a:1,b:2,c:3}

用途:
为对象添加属性
为对象添加方法
克隆对象
合并多个对象
为属性指定默认值

6. 属性的遍历

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

for…in
循环遍历对象自身的和继承的可枚举属性。(不包含Symbol属性)

Object.keys(obj)
返回一个数组,包括对象自身的(不包含继承的)所有可枚举属性。(不包含Symbol属性,但是包含不可枚举属性)

Object.getOwnPropertySymbol(obj)
返回一个数组,包含对象自身的所有Symbol属性。

Object.getOwnPropertyNames(obj)
返回一个数组,包含自身的所有属性,不包括Symbol,但是包括不可枚举属性。

Reflect.ownKeys(obj)
返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举

Reflect.enumerate(obj)
返回一个Iterator对象,遍历对象自身的和继承所有可枚举属性(不包含Symbol属性),与for…in相同

7. _proto_属性

用来读取或设置当前对象的prototype对象。

在实现上_proto_调用的是Object.prototype.proto

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值