zoukankan      html  css  js  c++  java
  • Object.create()和new 创建对象的区别

    Object.create()方法是ECMAScript5中新增的,用来规范化原型式继承的。
    这个方法接收两个参数,一个是用作新对象原型的对象,和一个为新对象定义额外属性的(可选)对象。

    var person = {
      name : "Nicholas",
      friends : ["John", "Jane"]  // 引用类型值属性共享
    }
    
    var onePerson = Object.create(person);  // onePerson继承person对象
    onePerson.name = "Greg";
    onePerson.friends.push("Mike");
    console.log(onePerson.name);  // Greg
    console.log(onePerson.friends);  // ["John", "Jane", "Mike"]
    
    var anotherPerson = Object.create(person);
    console.log(anotherPerson.name);  // Nicholas
    anotherPerson.friends.push("Jacky");
    console.log(anotherPerson.friends);  // ["John", "Jane", "Mike", "Jacky"]
    
    // 第二个参数对象格式与Object.defineProperties()方法的第二个参数格式相同
    var theOtherPerson = Object.create(person, {
                  name : {
                    configurable : false,  // 不可修改
                    value : "Greg"
                  }
    });
    console.log(theOtherPerson.name);  // Greg
    theOtherPerson.name = "Bob";  // 失效
    console.log(theOtherPerson.name);  // Greg

    new Object()方法的实质是,使用引用类型Object的构造函数创建了一个新的实例,这个实例拥有Object默认的方法如toString、toLocaleString等。

    示例基于JavaScript高级程序设计第三版进行了一些修改。

  • 相关阅读:
    何时使用Entity或DTO
    Lombok简介
    Spring Boot实现STOMP协议的WebSocket
    Java泛型构造函数
    Java 8 Comparator: 列表排序
    Spring Boot + Elastic stack 记录日志
    Sping、SpringMVC、SpringBoot的对比
    FileChannel指南
    让Spring Boot启动更快
    架构级开闭原则
  • 原文地址:https://www.cnblogs.com/lina6251125/p/6391714.html
Copyright © 2011-2022 走看看