1.Object.is()

es5比较两个值是否相等,只有两个运算符,相等(==) 和 严格相等(===),他们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0 等于 -0。es6提出了Object.is()方法,它用来比较两个值是否相等,与严格运算符(===)的行为基本一致

Object.is('foo', 'foo')  //false     Object.is({} , {}) //false

不同之处只有两个, Object.is(+0, -0) // true  Object.is(NaN , NaN) // true

2.Object.assign()

Object.assign 方法用于将源对象的所有可枚举属性复制到目标对象

var target = { a: 1}

var source = { b:2 }
var source2 = { c: 3} Object.assign(target , source, source2) target // { a: 1, b: 2, c:3 }
// 第一个参数是目标对象,后面的是源对象

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

如果只有一个参数,Object.assign会直接返回该参数

var obj = { a: 1}
Object.assign(obj) === obj

如果该参数不是对象,则会先转成对象,然后返回

typeof Object.assign(2) // 'object'

由于null 和 undefined 无法转成对象,所以如果将他们作为参数,就会报错, 如果他们不再首参数,便不会报错,会跳过他们;其他类型的值不再首参数也不会报错,但是除了,字符串会以数组的形式复制到目标对象,其他值不会产生效果。

var v1 = 'abc'
var v2 = true
var v3 = 10
var obj = Object.assign({}, v1, v2, v3)
obj // { "0": "a", "1": 'b", "2": "c"}

注意:Object.assign 是浅拷贝

常见用途: 为对象添加属性、克隆对象、为对象添加方法、为属性制定默认值

3.Object.keys()

es5引入了Object.keys方法,返回一个数组,成员是参数对象自身(不含继承)所有可遍历(enumerable)属性的键名。

var obj = { foo: 'bar', baz: 42}
Object.keys(obj) // ["foo", "baz"]

4. Object.values()方法返回一个数组,成员是参数对象自身的所有(不含继承)可遍历

var obj = { foo: 'bar', baz: 42}
Object.values(obj) // ["bar", 42]

5.Object.entries

Object.entries返回一个数组成员是参数对象自身所有可遍历属性的键值对数组

var obj = { foo: 'bar', baz: 42}
Object.entries(obj) // [ ["foo", "bar"], ["baz", 42]]

关于es6中对象的扩展的更多相关文章

  1. ES6中对象的扩展

    ES6不仅为字符串.数值和数组带来了扩展,也为对象带来了很多新特性.这一节,我们来一起学习一下对象的扩展. 对象的传统表示法 我们回顾一下,对象的传统表示法: let person = { " ...

  2. ES6 对对象的扩展

    1.对象类别 普通对象:具有JavaScript对象的所有默认内部行为 特异对象: 具有某些与默认行为不符的内部行为 标准对象: ECMAScript 6 规范中新定义的对象,例如Array,Date ...

  3. ES6中函数的扩展

    一.设置默认参数 ES6之前,给函数设置默认参数是这样做的: function fn(a) { if(typeof y === undefined){ a = a || 'hello'; } cons ...

  4. ES6中字符串的扩展

    一.查找字符串 在ES5中,可以使用 indexOf 方法和 lastIndexOf 方法查找字符串: let str = 'hello world'; alert(str.indexOf('o')) ...

  5. ES6中对象

    ES6允许把声明的变量直接赋值给对象,我们看下面的例子. let name="Zachary"; let skill= 'web'; let obj= {name,skill}; ...

  6. ES6中对象新增的方法

    属性的简洁表示法 ES6 允许在大括号里面直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = { foo }; console ...

  7. es6中对象的类与继承方法

    对于对象,我一直搞不清楚到底是该如何去继承,如何去书写.在熟练es6之后,终于会尝试写出来了. 代码如下: //我们假定父类为person,子类为man class person{ construct ...

  8. es6(三):es6中函数的扩展(参数默认值、rest参数、箭头函数)

    1.函数可以设置参数默认值 function test1(x,y=1){ console.log(x,y) } test1(10)//10 1 2.rest参数:形式为...变量名 function ...

  9. es6中对象的一些操坐

    变量的赋值 key值得构建 对象的严格检测 对象的合并 1.变量的赋值: let name='宋宇',age='17岁': let obj={name,age} //快速的将变量引入到对象中去. 2. ...

随机推荐

  1. BZOJ 5394 [Ynoi2016]炸脖龙 (线段树+拓展欧拉定理)

    题目大意:给你一个序列,需要支持区间修改,以及查询一段区间$a_{i}^{a_{i+1}^{a_{i+2}...}}mod\;p$的值,每次询问的$p$的值不同 对于区间修改,由线段树完成,没什么好说 ...

  2. vue单文件中引用路径的处理

    原文地址:vue单文件中引用路径的处理如有错误,欢迎指正! vue单文件的开发过程中,在单文件模版中可能会涉及到文件路径的处理,比如 <img>, style 中的 background ...

  3. 如何用一次性密码通过 SSH 安全登录 Linux

    有人说,安全不是一个产品,而是一个过程.虽然 SSH 协议被设计成使用加密技术来确保安全,但如果使用不当,别人还是能够破坏你的系统:比如弱密码.密钥泄露.使用过时的 SSH 客户端等,都能引发安全问题 ...

  4. iOS 中client和server的 Web Service 网络通信 (1)

    当你打开你手机上新浪微博应用或者知乎应用是.你是否会去想这些显示在手机上的图片和数据时从哪里来的?又是通过如何的方法实现的?好.那么接下来就介绍是如何实现的.过程又是怎么样的.      当我们浏览着 ...

  5. android 源码编译sdk

    源码下载好以后,想要编译sdk,结果一直失败,今天终于找到正确方法来解决这个问题了. 使用make sdk 编译命令,结果一直报找不到资源.找不到bin/sqite3等,后来操作如下命令就可以了 1. ...

  6. Getting Started with MongoDB (MongoDB Shell Edition)

    https://docs.mongodb.com/getting-started/shell/ Overview Welcome to the Getting Started with MongoDB ...

  7. SQL Server单表已700w+将普通表转换成分区表

    最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 ...

  8. 机器学习(一) K-means聚类

    聚类算法K-means是硬聚类算法,是目标函数聚类算法的代表.K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小.算法采用误差平方和准则函数作为聚 ...

  9. Redis缓存Mysql模拟用户登录Java实现实例

    https://blog.csdn.net/suneclipse/article/details/50920396

  10. EasyUI 之 DataGrid的两种赋值方法

    方法一:使用ViewData赋值 首先,我们创建一个User的实体类 public class User { public string UserID; public string UserName; ...