概述
Object.create() 方法创建一个拥有指定原型和若干个指定属性的对象。
语法
Object.create(proto, [ propertiesObject ])

通过Object.create 方法可以创建对象,在这里有两个参数,第一个参数是对象,第二个参数是该对象的属性设置

我们可以这样去创建对象

var obj = Object.create({})

当然,这是没有必要的,还是开门见山的说明吧
我们会这样去创建 对象

var obj = Object.create({},{"a":{value :1,configurable:false,enumerable :true,writable:true},"b":{value :2,configurable:false,enumerable :true,writable:true},"c":{value :3,configurable:false,enumerable :true,writable:true}});console.log(obj.a)//输出 1
console.log(obj.b)//输出 2
console.log(obj.c)//输出 3

在这里,我们可以看到创建了一个对象,并且这个对象有三个属性 a,b,c
但是不单单是简单的三个属性,如果这样也没必要说了

第二个参数是一个对象的形式配置的,key就是属性的名称,value 又是一个对象,这里的value对象就是对该属性的描述
这里value对象有四个属性值value、configurable、enumerable 、writable

注: 1、在使用Object.defineProperty、Object.defineProperties 或 Object.create 函数的情况下添加数据属性,writable、enumerable和configurable默认值为false。
2、使用对象直接量创建的属性,writable、enumerable和configurable特性默认为true

value

对象属性的默认值,默认值为undefined
这个没什么好说的,就是当前属性的属性值。在这个例子里,属性a的值就是1

configurable

能否使用delete、能否需改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
简单的说 ,设置这个为false之后,就不能删除这个属性或修改这个属性(属性值不影响),这个属性就是这个对象固有的,如果删除,则不成功

var obj = Object.create({},{"a":{value :1,configurable:false,enumerable :true,writable:true},
});delete obj.a// 删除失败,普通模式没有提示或错误,严格模式会有TypeError
obj.a = 2;
console.log(obj.a);//正常使用,输出结果为 2

enumerable

可枚举性
对象属性是否可通过for-in循环,flase为不可循环,默认值为true
简单的说,当你想用 for-in 遍历这个对象的时候,正常会输出每一个属性,但当你设置false时,这个属性就不会被for-in 遍历读到

var obj = {a: 1,b: 2,c: 3
};
obj = Object.create(obj, {"a": {value: 1,configurable: false,enumerable: false,writable: false}
});for(var i in obj) {console.log(i); //输出b,c 不会输出a,a已经设置不被枚举
}

writable

对象属性是否可修改,flase为不可修改,默认值为true
设置不可修改后,可以理解为常量,不能对属性值进行修改

var obj = Object.create({},{"a":{value :1,configurable:false,enumerable :true,writable:false},
});
obj.a = 2;//普通模式不会抛异常,严格模式会抛出TypeError
console.log(obj.a);//输出1 ,不可被修改

除了Object.create() 可以这样使用外,还有Object.defineProperty 和 Object.defineProperties中使用。

Object.getOwnPropertyDescriptor(object, propertyname) 方法用于查询一个属性的描述符,并以对象的形式返回
Object.defineProperty(object,propertyname,descriptor) 方法用于创建或配置对象的一个属性的描述符,返回配置后的对象
Object.defineProperty(object,descriptors)方法用于创建或配置对象的多个属性的描述符,返回配置后的对象
Object.create(proto,descriptors)方法使用指定的原型和属性来创建一个对象

JS对象创建 Object.create() 方法相关推荐

  1. JS对象中常见的方法

    本文主要介绍Native对象,即在ECMAScript标准中定义和描述,包括JavaScript内置对象(数组,日期对象等)和用户自定义的对象 目录 1. 对象的创建并添加属性 1. new 对象 2 ...

  2. JavaScript 复制对象与Object.assign方法无法实现深复制

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...

  3. Object.create()方法

    Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的proto. 语法:Object.create(proto, [propertiesObject]) - proto ...

  4. js中的Object.create(null) 和 {} 的区别

    console.log(Object.create(null))console.log({}) 结果图 根据结果我们不难发现,两者最大区别在于Object.create(null)创建的对象没有继承O ...

  5. JavaScript的Object.create()方法

    JavaScript的Object.create()方法 ES5定义了一个名为Object.create()的方法,它创建一个对象,其中第一个参数就是这个对象的原型,Object.create()提供 ...

  6. es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法

    [Object.keys()] ES5 引入了Object.keys()方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名var obj = { foo ...

  7. js对象转数组的方法一种方法

    js对象转数组的方法一种方法 let obj = { name: '张三', age: 18, sex: '男' };let a = Object.values(obj) //属性值 // ['张三' ...

  8. JS对象和JSON的相互转换方法

    JS对象和JSON的相互转换方法 一个复杂的js对象 //json要求和js对象是一样的,只不过key必须是字符串//js对象在声明的时候是否加双引号是可以选择的var student = {last ...

  9. js 对象创建及其继承的方法

    重新看红皮书,觉得很多知识多看几遍确实是能看的更明白些.今天重温了一下对象创建和继承,就稍微记下来,巩固一下. js是面向对象的编程语言,ECMA-262吧对象定义为:"无序属性的集合,其属 ...

最新文章

  1. C++报错无效的预处理命令include_无废话--Mac OS, VS Code 搭建c/c++基本开发环境
  2. js 乘法除法精度问题
  3. delphi xe firedac mysql_xe6+firedac 连接sybase
  4. BZOJ4388 : JOI2012 invitation
  5. ssl/tls服务器瞬时_SSL / TLS REST服务器–带有Spring和TomEE的客户端
  6. React面试题总结,含爱奇艺,小米,腾讯,阿里
  7. java 画多边形_javascript绘制一个多边形
  8. 发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined
  9. Atitit.软件开发的几大规则,法则,与原则Principle v5 1.1. 修改历史 2 2. 设计模式六大原则 3 2.1. 设计模式六大原则(1):单一职责原则 3 2.2. 设计模式六
  10. [三思笔记]---一步一步学DataGuard
  11. android下canvas连线题思路
  12. 计算机机房日常巡检内容,IT机房巡检工作流程及标准.doc
  13. Navicat premium 导入大数据的Excel文件失败的方法
  14. Layabox开发微信小游戏好友排行榜功能流程
  15. 日本开设无人机专业,打造无人机“人才市场”
  16. 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络
  17. QQ群推广的13杀招
  18. c++实现经典游戏贪吃蛇(超详解)
  19. spring框架学习 - 使用 Spring 的面向切面编程 补充1
  20. dedecms xss oday通杀所有版本 可getshell

热门文章

  1. 读冯唐先生的《素女经》
  2. Abb通过OPC UA 和PLC进行通讯
  3. nimble 蓝牙开发三:nimble BLE 应用介绍
  4. python-selenium-webdriver screenshot 截图失败
  5. windows server 2008 R2、windows 10、windows server 2012 R2安装windows media player
  6. idea 如何一键清除所有断点
  7. 客户隐隐约约感觉到自己想要什么,但没法确切说出来
  8. Rosetta Stone的第二遍学习总结
  9. 10款最好的Photoshop替代软件
  10. 64位机器上的控件注册