对象Object
功能分类
1. 创建对象
- 把各对数自身拥有的可枚举属性复制到第一个对象并返回:obj = Object.assign(o1, o2, o3),o1=obj
- assign会自动把非对象参数转换为对象,如数组会转换成序号为key,相应值为value的对象
- 继承并扩展一个原型对象:obj = Object.create(protoObj, {属性对象}), obj.__proto = protoObj
2. 属性相关
- 添加/修改一个(多个):Object.defineProperty(obj, 属性名,{一个属性描述对象})、Object.defineProperties(obj, {一个或多个属性对象})
- 注:只会修改自身的属性,即使原型上有相同的属性,也会在自身上再添加一个
- 获取自身拥有的属性描述,返回的是一个对象:Object.getOwnPropertyDescriptor(obj, 属性名),Object.getOwnPropertyDescriptors(obj)(所有属性的描述)
- 获取自身拥有的属性名称(字符串)数组:Object.getOwnPropertyNames(obj)
- 获取自身拥有的属性名称(Symbol)数组:Object.getOwnPropertySymbols(obj)
- 根据名称判断是否拥有该属性(字符串/Symbol):Object.hasOwnProperty(属性名)
- 判断自身的一个属性(字符串/Symbol)是否可枚举:Object.propertyIsEnumerable(属性名)
- 获取所有可枚举属性(字符串)的名称数组:Object.keys(obj)
- 获取所有可枚举属性(字符串)的值数组:Object.values(obj)
- 获取所有可枚举属性(字符串)的[名称,值]数组:Object.entries(obj)
————属性描述符的说明
对象的属性描述符有两种主要形式:数据描述符和存取描述符。数据描述符是一个具有值的属性,该值可能是可写的,也可能不是可写的。访问器描述符是由getter-setter函数对描述的属性。描述符必须是这两种形式之一;不能同时是两者。(√/X:表示描述符是否有该键值)
| 描述符的键值 | configurable | enumerable | value | writable | get | set |
| 数据描述符 | √ | √ | √ | √ | X | X |
| 存取描述符 | √ | √ | X | X | √ | √ |
| 意义 |
除writable外的其它是否可以修改, 以及该属性是否可删除 |
枚举,for...in,Object.keys | 访问时的值 | 是否可写 | 访问时调用 | 设置时调用 |
| 默认值 | false | false | undefine | false | undefine | undefine |
3. 原型相关
设置:Object.setPrototypeOf(obj)
获取:Object.getPrototypeOf(obj)
判断是否是另一个的__proto:obj.isPrototypeOf(other)
4. 其它功能
- 冻结使不能修改/删除属性:Object.freeze(obj)/Object.isFrozen()
- 封闭使不能删除属性:Object.seal(obj)/Object.isSealed()
- 禁止添加新属性:Object.preventExtensions(obj)/Object.isExtensible(obj)
- 判断两个对象是否相同:Object.is(o1, o2)=>NaN===NaN, -0 != +0, {a:1}!={a:1}
- toLocaleString直接调用toString:obj.toString() {k:v}返回的结果为[object Objec],其它会返回内部值
- 返回对象原始值:obj.valueOf() === obj
es6
- 变量名作为属性名:{a} =>{a:a}
- 方法作为属性时可以省去function,且function/class等关键字可以作为方法名。obj = {class(){}}
- 属性名表达式,[变量]会先得到变量的值,然后将其作为属性名。如果变量是一个函数的话,直接使用其toString()的字符串,而不是函数执行结果
- 在函数里面除了this,增加了super来指向调用者的__proto__对象
- Object.is, Object.assign, Objet.getOwnPropertyDescriptor, Object.setPrototypeOf, Object.getPrototypeOf, Object.keys, Object.values, Object.entries
对象Object的更多相关文章
- 一个简单的游戏开发框架(五.对象Object)
前面提到我们把行为Action从对象Object中分离了出来,用各种不同的行为组合出对象的功能.大家都知道,面向对象的一个类,就是数据和操作的集合.操作(行为)被分离出来了,数据怎么办呢?操作依赖的数 ...
- Java中的对象Object方法之---wait()和notifiy()
这一篇咋们继续,接着来介绍wait()和notify()方法,我们都知道这两个方法和之前介绍的方法不太一样,那就是这两个方法是对象Object上的,不属于Thread类上的.我们也知道这两个方法是实现 ...
- js内置对象-Object
1)Object构造函数的方法 返回指定对象的原型对象 Object.getPrototypeOf(mymap); /*{featureStyle: {…}, selfLayersCount: nul ...
- java的类class 和对象object
java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样.而 一个源文件中只能有一个public的类,类名的首字母通常为大写. 使用public修饰的类可以 ...
- 1月5日 对象Object, 含过去看的英文档的总结链接
Object 也是一种数据类型,可以有属性,有method. 反之,在Ruby中,每一种数据类型都是Object.如String,Integer,Float,Array,Hash. IN Ruby e ...
- vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')
vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')
- Java常见对象Object类中的个别方法
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...
- Java - 对象(object) 具体解释
对象(object) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24059545 对象(object)的实例能够是 ...
- JS json对象(Object)和字符串(String)互转方法
[JS json对象(Object)和字符串(String)互转方法] 参考:https://blog.csdn.net/wenqianla2550/article/details/78232706 ...
随机推荐
- 在SQL注入中利用MySQL隐形的类型转换绕过WAF检测
web应用一般采用基于表单的身份验证方式(页面雏形如下图所示),处理逻辑就是将表单中提交的用户名和密码传递到后台数据库去查询,并根据查询结果判断是否通过身份验证.对于LAMP架构的web应用而言,处理 ...
- Filter 快速开始 异步Servlet 异步请求 AsyncContext 异步线程 异步派发 过滤器拦截
[web.xml] <filter> <filter-name>normalFilter</filter-name> <filter-class>net ...
- 修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形
修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形: 提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的不给成绩 2*9=18 3*9=27 4*9=36 ...
- 利用xpath爬取招聘网的招聘信息
爬取招聘网的招聘信息: import json import random import time import pymongo import re import pandas as pd impor ...
- js监听浏览器返回事件
$(function(){ pushHistory(); window.addEventListener("popstate", function(e) { window.loca ...
- 个人经验~mongo故障处理思路
一 简介:mongodb 应该如何排查二 分析角度 linux 角度 1 硬件是否有问题 常见主板 raid卡 和raid磁盘组 2 综合指标 负载 uptime : 1min 5mi ...
- response的字节流和字符流输入的区别和问题--02-response的outputStream输出数据的问题.avi
02-response的outputStream输出数据的问题.avi; [字节流] 用meta标签 第一段原始代码:写错: 03-response的Writer输出数据的问题.avi;[字符流输出] ...
- ARM核心板_迅为4412核心板_核心板中的小新潮
iTOP-4412核心板是迅为电子推出的一款高端四核核心板,配备三星Exynos 4412四核处理器,主频为1.4GHz,内置8GB存储空间. 该板设计小巧.配备三星自家电源管理芯片,具有9路DC/D ...
- 对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解
乐观锁 乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了. 实现: 通常实现是 ...
- Python换行符问题:\r\n还是\n?
今天写一个Python脚本去读取一个txt文件时,发现一个很有趣的现象: 如果这个文件是用atom编辑器写的,发现换行符是'\r'.这样一来去逐行读取数据就失效了,因为用open函数 去打开该文件re ...