1,Object.is():比较两个值是否严格相等,es5的‘===’,不能判断+0和-0,还有NaN,但是es6的Object.is()可以区分

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

 

2,Object.assign():将源对象所有的可枚举的属性复制到目标对象。这个非常重要!

Object.assign(target, source1, source2......);第一个参数是目标对象,后面的参数都是源对象。

这是一种浅拷贝,不能达到我们期望的深拷贝,例如:

var target = {a: {b: 'c', d: 'e'}}
var source = {a: {b: 'hello'}}
Object.assign(target, source); // {a: {b: 'hello'}}

有参考说深拷贝可以用lodash的defaultsDeep,但是它有个缺陷就是同名属性不会覆盖。

3,属性的遍历

  for...in:对象自身和继承的可枚举属性

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

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

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

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

4,IE11已经支持__proto__属性

5,Object.setPrototypeOf():用来设置一个对象的prototype对象,返回参数对象本身。它是ES6正式推荐的设置原型对象的方法!

Object.setPrototypeOf(object, prototype);

6,Object.getPrototypeOf():读取一个对象的prototype对象

=====

这里补充一个Object.create()方法:会使用指定的原型对象及其属性去创建一个新的对象。

Object.create(proto [, propertiesObject]);

第一个参数必须是null或对象,第二个参数可选,是Object.defineProperties()的第二个参数。

看一个实例:

// Shape - superclass
function Shape() {
this.x = 0;
this.y = 0;
} // superclass method
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info('Shape moved.');
}; // Rectangle - subclass
function Rectangle() {
Shape.call(this); // call super constructor.
} // subclass extends superclass
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle; var rect = new Rectangle(); console.log('Is rect an instance of Rectangle?',
rect instanceof Rectangle); // true
console.log('Is rect an instance of Shape?',
rect instanceof Shape); // true
rect.move(1, 1); // Outputs, 'Shape moved.'

  

7,Object.keys(),这个是es5的方法,返回一个数组,成员是参数对象自身的(不含继承的所有可遍历属性的键名),这个有点类似于数组实例的keys(),但是那个方法返回的是Iterator Object,这个返回的是真数组。

es6重点笔记:对象的更多相关文章

  1. es6重点笔记:数值,函数和数组

    本篇全是重点,捡常用的怼,数值的扩展比较少,所以和函数放一起: 一,数值 1,Number.EPSILON:用来检测浮点数的计算,如果误差小于这个,就无误 2,Math.trunc():取整,去除小数 ...

  2. es6重点笔记:Symbol,Set,Map,Proxy,Reflect

    一,Symbol 原始数据类型,不是对象,它是JavaScript第七种数据类型,表示独一无二的值.Symbol是通过Symbol函数生成的: let s = Symbol(); typeof s / ...

  3. es6重点笔记:let,const

    一,let 先看代码: var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i) }; } a ...

  4. ES6重点--笔记(转)

    最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...

  5. ES6学习笔记(一):轻松搞懂面向对象编程、类和对象

    目录 面向过程编程P OP(Process oriented programming) 面向对象编程OOP(Object Oriented Programming) 总结 @ 面向过程编程P OP(P ...

  6. ES6学习笔记(对象)

    1.属性的简洁表示法 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {f ...

  7. ES6学习笔记(8)----对象的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ...

  8. ES6 学习笔记之对象的拓展

    1.属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样书写更加简洁. const foo = 'bar'; const baz = {foo}; baz //{foo: &q ...

  9. 《深入理解ES6》笔记——扩展对象的功能性(4)

    变量功能被加强了.函数功能被加强了,那么作为JavaScript中最普遍的对象,不加强对得起观众吗? 对象类别 在ES6中,对象分为下面几种叫法.(不需要知道概念) 1.普通对象 2.特异对象 3.标 ...

随机推荐

  1. [Spark内核] 第29课:Master HA彻底解密

    本课主题 Master HA 解析 Master HA 解析源码分享 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... Master HA 解析 生产环境下一般 ...

  2. Python 数据科学系列 の Numpy、Series 和 DataFrame介绍

    本課主題 Numpy 的介绍和操作实战 Series 的介绍和操作实战 DataFrame 的介绍和操作实战 Numpy 的介绍和操作实战 numpy 是 Python 在数据计算领域里很常用的模块 ...

  3. Java学习笔记9(面向对象二:this、继承、抽象类)

    就近原则: 类中的方法中的变量和成员变量重名时,调用类的方法时候,生效的是方法中的变量,如果方法中没有定义变量,才会去成员变量中寻找 于是,提出了this关键字,为了区分重名问题 public cla ...

  4. Android查缺补漏(View篇)--事件分发机制

    事件分发机制是Android中非常重要的一个知识点,同时也是难点,相信到目前为止很多Android开发者对事件分发机制并没有一个非常系统的认识,当然也包括博主个人在内.可能在平时的开发工作中我们并没有 ...

  5. apache2.2版本安装说明

     部署httpd服务  apache是一个模块化设计的服务,所谓的模块化就是将各个功能,特性都独立的分开,这样设计的好处是可扩展性强,各个功能之间的依赖性相对较弱,在后期修改,升级,添加新功能是非常方 ...

  6. linux下centos6.8相关配置,以及音频相关配置

    一:安装上传下载命令 1:cd /tmp 2:wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz 3:tar zxvf lrzsz-0. ...

  7. Python基础知识拾遗

    彻底搞清楚python字符编码 python的super函数

  8. TCP/IP和UDP之间的区别(转载)

    在分析两者之间的区别之前,我们先搞清楚这两者的关系, TCP/IP协议簇  是一种网络控制协议,简单点说就是一种网络协议,我们网络中的计算机就是通过这套协议簇来进行数据通信的.这套协议簇里面包含了很多 ...

  9. 认识Sass和Compass

    第一章 Sass和Compass让样式表重焕青春 // 内容概要// 开始学习Sass和动态样式表// 用Sass更高效地写样式表// Compass简介// 用Compass迎接工程实践中的样式挑战 ...

  10. UVA11039-Building designing

    Building designing Time limit: 3.000 seconds An architect wants to design a very high building. The ...