功能分类                      

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的更多相关文章

  1. 一个简单的游戏开发框架(五.对象Object)

    前面提到我们把行为Action从对象Object中分离了出来,用各种不同的行为组合出对象的功能.大家都知道,面向对象的一个类,就是数据和操作的集合.操作(行为)被分离出来了,数据怎么办呢?操作依赖的数 ...

  2. Java中的对象Object方法之---wait()和notifiy()

    这一篇咋们继续,接着来介绍wait()和notify()方法,我们都知道这两个方法和之前介绍的方法不太一样,那就是这两个方法是对象Object上的,不属于Thread类上的.我们也知道这两个方法是实现 ...

  3. js内置对象-Object

    1)Object构造函数的方法 返回指定对象的原型对象 Object.getPrototypeOf(mymap); /*{featureStyle: {…}, selfLayersCount: nul ...

  4. java的类class 和对象object

    java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样.而 一个源文件中只能有一个public的类,类名的首字母通常为大写. 使用public修饰的类可以 ...

  5. 1月5日 对象Object, 含过去看的英文档的总结链接

    Object 也是一种数据类型,可以有属性,有method. 反之,在Ruby中,每一种数据类型都是Object.如String,Integer,Float,Array,Hash. IN Ruby e ...

  6. vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')

    vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')

  7. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  8. Java - 对象(object) 具体解释

    对象(object) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24059545 对象(object)的实例能够是 ...

  9. JS json对象(Object)和字符串(String)互转方法

    [JS json对象(Object)和字符串(String)互转方法] 参考:https://blog.csdn.net/wenqianla2550/article/details/78232706 ...

随机推荐

  1. jsp 起航 和Servlet通过attribute通信

    @WebServlet(name = "ticketServlet",urlPatterns = {"/tickets"},loadOnStartup = 1) ...

  2. html5 缓存实例

    html5 有两种缓存 1.localStorage:浏览器关闭后,数据库还存在. 2.sessionStorage:session缓存,浏览器关闭后,数据已经不存在. 实例一:localStorag ...

  3. Docker 更改默认存储目录 - 十一

    Cemtos 7 Docker 默认目录是 /var/lib/docker docker info 查看 docker 配置信息 更改 docker 默认目录 :  编辑 启动文件: 编辑 /usr/ ...

  4. Kali Linux之web安全扫描器skipfish使用

    0x00.skipfish简介 谷歌公司出品的开源web程序评估软件. skipfish特点:CPU资源占用低,扫描速度快,每秒可以轻松处理2000个请求,误报率低. 1x00.skipfish使用 ...

  5. rabbitMQ学习3-RPC远程过程调用

    将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 比喻 将计算机服务运行理解为厨师做饭 ...

  6. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Regularization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Regularization Welcome to the second assignment of this week. Deep ...

  7. 关于SQL的over partition by 开窗语句在分页和统计中的使用总

    CREATE TABLE OrderInfo( ID INT IDENTITY(1,1) PRIMARY KEY, CustomerID INT NULL, TotalMoney DECIMAL(18 ...

  8. jquery正则表达式

    参考链接:  http://www.bkjia.com/Javascript/1084651.html

  9. mongodb系列~mongodb集群介绍与管理

    mongodb 集群维护1 简介    谈谈mongodb的集群架构2 常用的维护命令   1 查看状态 sh.status()         1 version        2 shards: ...

  10. python - 爬虫入门练习 爬取链家网二手房信息

    import requests from bs4 import BeautifulSoup import sqlite3 conn = sqlite3.connect("test.db&qu ...