• Object.create() 和 new Object()、{} 的区别


    Object.create()

    Object.create()方法规范化了原型式继承。这个方法接收两个参数:Object.create(obj,propertiesObject) ;

    obj:一个对象,用作新对象的原型对象

    propertiesObject:(可选的)为新对象定义额外属性的对象。该参数与 Object.defineProperties() 方法的第二个参数格式相同:每个属性都是通过自己的描述符定义的。以这种方式指定的任何属性都会覆盖原型对象上的同名属性。

    var cat = {
        name : 'Tom',
        color : 'black'
    };
    var test1 = Object.create(cat,{
        name : {
            value : 'Jack'
        },
        age : {
            value : 5
        }
    });
    console.log(test1.name);  //Jack
    console.log(test1.color); //black
    console.log(test1.age);   //5

    new Object() 和 {}

    var obj = { name :'Jack' };

    它其实等同于下面这样:

    var obj = new Object();
    obj.name = 'Jack' ;      

    {} 是以对象字面量的形式创建了一个对象,new Object() 是通过 Object 构造函数创建了一个对象

    上面两种方法从底层实现上是没有区别的。

    1.在传入一个参数的情况下, Object.create() 与 new Object()方法的行为相同。 

    var cat = {
        name : 'Tom'
    };
    var test1 = Object.create(cat);
    console.log(test1.name); //Tom
    
    var test2 = new Object(cat);
    console.log(test2.name); //Tom

    2.Object.create() 与 new Object() 的区别在于,创建的对象的原型对象不同。

    var cat = {
        name : 'Tom'
    };
    var test1 = Object.create(cat);
    var test2 = new Object(cat);
    console.log(test1.__proto__ == cat);               //true
    console.log(test2.__proto__ == Object.prototype);  //true
    console.log( cat.__proto__  == Object.prototype);  //true

    3.怎么使 Object.create() 等同于 new Object() 呢?

    var test1 = Object.create(Object.prototype);
    var test2 = new Object();
    console.log(test1.__proto__ == Object.prototype);  //true
    console.log(test2.__proto__ == Object.prototype);  //true
  • 相关阅读:
    获取成本
    销售订单跟踪成本
    装机
    这就是用战术上的勤奋掩盖战略上的懒惰
    CPA-计划(参考)
    大帝名言
    BZOJ 2100: [Usaco2010 Dec]Apple Delivery spfa
    BZOJ 2834: 回家的路 Dijkstra
    BZOJ 4070: [Apio2015]雅加达的摩天楼 根号分治+spfa
    BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心
  • 原文地址:https://www.cnblogs.com/3yleaves/p/9613505.html
Copyright © 2020-2023  润新知