功能分类                      

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. JS创建对象之稳妥构造函数模式

    所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象 function Person(name, age, job) { // 创建要返回的对象 var o = new Object() ...

  2. 十七、文件和目录——minishell(1)

    主函数运行要去读取从标准输入或终端上输入的整个命令行,然后再去解析命令行参数,解析出来之后,要将其封装成一个 program,然后再将 program 放入 job 中,然后再去执行 job 中的命令 ...

  3. ASP.NET MVC利用PagedList分页(一)

    前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行 ...

  4. labelImg 工具

    安装anaconda, 在anaconda prompt 下 执行 pyrcc4 -o resources.py resources.qrc python labelImg.py

  5. 帮助类-AD域操作

    private static void GetAllUsersInAD() { DirectorySearcher searcher = new DirectorySearcher(); search ...

  6. mysql 架构 ~ MGR 与PXC的对比

    一 简介 MGR和PXC的对比 二  WriteSet1 定义 是组件对于写节点应用事务生成binlog的再封装,用来验证其他节点的事务冲突 PXC构成key db_table_组件值data bin ...

  7. Solr版本问题分析

    在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了 ...

  8. OVS-----CentOS7上搭建基于Open vSwitch的VxLAN隧道实验

    一.关于VXLAN VXLAN 是 Virtual eXtensible LANs 的缩写,它是对 VLAN 的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多. ...

  9. java String、StringBuffer、StringBuild、StringTokenizer

    StringBuffer线程安全.StringBuilder线程不安全 效率: StringBuilder(线程不安全) > StringBuffer(线程安全) > String Str ...

  10. ROS 可视化(一): 发布PointCloud2点云数据到Rviz

    1. 相关依赖package.xml 需要添加对 pcl_ros 包的依赖 2. CMakeLists.txt find_package(PCL REQUIRED) include_directori ...