JS对象创建 Object.create() 方法
概述
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() 方法相关推荐
- JS对象中常见的方法
本文主要介绍Native对象,即在ECMAScript标准中定义和描述,包括JavaScript内置对象(数组,日期对象等)和用户自定义的对象 目录 1. 对象的创建并添加属性 1. new 对象 2 ...
- JavaScript 复制对象与Object.assign方法无法实现深复制
在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...
- Object.create()方法
Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的proto. 语法:Object.create(proto, [propertiesObject]) - proto ...
- js中的Object.create(null) 和 {} 的区别
console.log(Object.create(null))console.log({}) 结果图 根据结果我们不难发现,两者最大区别在于Object.create(null)创建的对象没有继承O ...
- JavaScript的Object.create()方法
JavaScript的Object.create()方法 ES5定义了一个名为Object.create()的方法,它创建一个对象,其中第一个参数就是这个对象的原型,Object.create()提供 ...
- es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法
[Object.keys()] ES5 引入了Object.keys()方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名var obj = { foo ...
- js对象转数组的方法一种方法
js对象转数组的方法一种方法 let obj = { name: '张三', age: 18, sex: '男' };let a = Object.values(obj) //属性值 // ['张三' ...
- JS对象和JSON的相互转换方法
JS对象和JSON的相互转换方法 一个复杂的js对象 //json要求和js对象是一样的,只不过key必须是字符串//js对象在声明的时候是否加双引号是可以选择的var student = {last ...
- js 对象创建及其继承的方法
重新看红皮书,觉得很多知识多看几遍确实是能看的更明白些.今天重温了一下对象创建和继承,就稍微记下来,巩固一下. js是面向对象的编程语言,ECMA-262吧对象定义为:"无序属性的集合,其属 ...
最新文章
- C++报错无效的预处理命令include_无废话--Mac OS, VS Code 搭建c/c++基本开发环境
- js 乘法除法精度问题
- delphi xe firedac mysql_xe6+firedac 连接sybase
- BZOJ4388 : JOI2012 invitation
- ssl/tls服务器瞬时_SSL / TLS REST服务器–带有Spring和TomEE的客户端
- React面试题总结,含爱奇艺,小米,腾讯,阿里
- java 画多边形_javascript绘制一个多边形
- 发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined
- Atitit.软件开发的几大规则,法则,与原则Principle v5 1.1. 修改历史	2 2. 设计模式六大原则	3 2.1. 设计模式六大原则(1):单一职责原则	3 2.2. 设计模式六
- [三思笔记]---一步一步学DataGuard
- android下canvas连线题思路
- 计算机机房日常巡检内容,IT机房巡检工作流程及标准.doc
- Navicat premium 导入大数据的Excel文件失败的方法
- Layabox开发微信小游戏好友排行榜功能流程
- 日本开设无人机专业,打造无人机“人才市场”
- 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络
- QQ群推广的13杀招
- c++实现经典游戏贪吃蛇(超详解)
- spring框架学习 - 使用 Spring 的面向切面编程 补充1
- dedecms xss oday通杀所有版本 可getshell