概述
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. 推动健全云生态 阿里云锐不可当
  2. cryptojs aes加密每次结果不同_Javascript加密算法标准库,支持Nodejs+浏览器——crypto-js...
  3. 一种快速的公交专用车道检测方法
  4. grantrevoke
  5. RESTClient 用法
  6. 四、【线性表】线性表的顺序表示和实现
  7. JS关键字和保留字汇总(小记)
  8. 基于Jekyll的博客模板
  9. UVa 10935 - Throwing cards away I
  10. Java对象序列化文件追加对象的问题,以及Java的读取多个对象的问题解决方法。
  11. QQ聊天记录恢复、迁移教程(改变默认存储位置、个人文件夹保存位置)
  12. 高数不定积分方法汇总:
  13. uniApp图片加水印
  14. Mircrosoft Visual C++ Runtime Library提示窗口为何黏着桌面
  15. 为seo而生的WordPress主题RabbitV3.0主题分享
  16. Flask学习笔记总结(一)
  17. android usb投影win10,win10如何投影到安卓平板上
  18. 计算机思维在化工方面的应用,计算思维在化学上的应用.pdf
  19. Workflow,要不要了解一下
  20. 公众号怎么赚钱新思路,这么运营你也可以轻松获得睡后收入!

热门文章

  1. [电路笔记------信号的分贝含义]
  2. 计算机信息系统处置预案,计算机信息系统应急处置预案.doc
  3. python数字比较大小的函数_python3写一个比较数字大小的简单脚本,大师来详解...
  4. xendesktop更新计算机,XenDesktop7.12发布Win10周年更新版桌面
  5. sqlserver2000换成mysql_将SQL Server 2000数据导入到MySQL 5.5的方法
  6. LR----乱码转换格式---乱码转换成UTF-8
  7. 《计算机应用文摘2014年》更新至12月下
  8. html5网页中加入播放器,10款jquery+html5实现的网页播放器
  9. VB程序学习代码记录20160731
  10. 副业新风口:淘宝无货源,1天1小时!一月3W!