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. 浏览器根对象window之screen

    1. screen 1.1 availHeight/Width screen.availWidth返回浏览器窗口可占用的水平宽度(单位:像素). screen.availHeight返回浏览器窗口在屏 ...

  2. JS获取前天、昨天、今天、明天、后天的时间

    GetDateStr = function(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount);//获取A ...

  3. 2017 年的 人生 hard 模式终于结束了,2018年回归初心

    2017 年的 人生 hard 模式终于结束了,2018年回归初心 2017年对于我个人来讲, 毫不夸张的说 算是近十年来除了高考那一年,最最惊心动魄的一年了,没有之一. >>>开篇 ...

  4. 盒模型 bug 与触发 bfc

     一.margin合并 css经典bug  两个块级元素 分别设置 margin-bottom 和 margin-top 并不能达到预期效果 <style> .up{ width: 200 ...

  5. C++雾中风景6:拷贝构造函数与赋值函数

    在进行C++类编写的过程之中,通常会涉及到类的拷贝构造函数与类的赋值函数.初涉类编写的代码,对于两类函数的用法一直是挺让人困惑的内容.这篇文章我们会详细来梳理拷贝构造函数与赋值函数的区别. 1.调用了 ...

  6. Beyond Globally Optimal: Focused Learning

    这里对WWW 2017文章<Beyond Globally Optimal: Focused Learning for Improved Recommendations>进行一个简单的分析 ...

  7. deeplearning.ai 人工智能行业大师访谈 林元庆 听课笔记

    1. 读博士之前,林元庆是学光学,他自认为数学基础非常好.在宾夕法尼亚大学上课认识了他的博士导师Dan Lee,转学机器学习.他从头开始学了很多算法,甚至PCA,之前他完全不知道这些,他觉得非常兴奋, ...

  8. webpack学习之路

    当自己在学习webpack的时候,在网上发现中文的很详细的教程很少,于是便想将自己学习webpack的笔记记录整理下来,便有了这篇文章,希望对大家有所帮助,如果有错误,欢迎大家指出. 在我们开始之前 ...

  9. 【易语言学习】Day1

    个人认为网上讲的都不是很好,查阅了各类资料,特意找了份比较不错的PDF版,需要的可以私聊我~~~ 今天就看到这里了,请听下回分解

  10. POJ 1739:Tony's Tour

    Description A square township has been divided up into n*m(n rows and m columns) square plots (1< ...