• es6重点笔记:对象


    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,这个返回的是真数组。

  • 相关阅读:
    day 34
    day 33 线程锁
    day 32 操作系统、线程和进程(GIL锁)
    day 31 网络基础的补充
    day 30 多线程 socketserver模块补充
    python自学笔记 2019/07/01
    类与对象的概念
    递归及三种二分法
    好看的颜色
    zend 汉化
  • 原文地址:https://www.cnblogs.com/yanchenyu/p/7886254.html
Copyright © 2020-2023  润新知