zoukankan      html  css  js  c++  java
  • js你不是的那些基础问题-Object 对象

    1 Object 的静态方法

      所谓“静态方法”,是指部署在Object对象自身的方法。

    1.1 Object.keys(),Object.getOwnPropertyNames()

      Object.keys方法和Object.getOwnPropertyNames方法都用来遍历对象的属性。

      Object.keys方法的参数是一个对象,返回一个数组。

      该数组的成员都是该对象自身的(而不是继承的)所有属性名。

    var obj = {
      p1: 123,
      p2: 456
    };
    
    Object.keys(obj) // ["p1", "p2"]
    

      Object.getOwnPropertyNames方法与Object.keys类似,也是接受一个对象作为参数,

      返回一个数组,包含了该对象自身的所有属性名。

      对于一般的对象来说,Object.keys()Object.getOwnPropertyNames()返回的结果是一样的。

      只有涉及不可枚举属性时,才会有不一样的结果。

      Object.keys方法只返回可枚举的属性(详见《对象属性的描述对象》一章),

      Object.getOwnPropertyNames方法还返回不可枚举的属性名。

    var a = ['Hello', 'World'];
    
    Object.keys(a) // ["0", "1"]
    Object.getOwnPropertyNames(a) // ["0", "1", "length"]
    

      上面代码中,数组的length属性是不可枚举的属性,.

      所以只出现在Object.getOwnPropertyNames方法的返回结果中。

      一般情况下,几乎总是使用Object.keys方法,遍历对象的属性。

    1.2 其他方法

    除了上面提到的两个方法,Object还有不少其他静态方法,将在后文逐一详细介绍。

    (1)对象属性模型的相关方法

    • Object.getOwnPropertyDescriptor():获取某个属性的描述对象。
    • Object.defineProperty():通过描述对象,定义某个属性。
    • Object.defineProperties():通过描述对象,定义多个属性。

      (2)控制对象状态的方法

    • Object.preventExtensions():防止对象扩展。
    • Object.isExtensible():判断对象是否可扩展。
    • Object.seal():禁止对象配置。
    • Object.isSealed():判断一个对象是否可配置。
    • Object.freeze():冻结一个对象。
    • Object.isFrozen():判断一个对象是否被冻结。

      (3)原型链相关方法

    • Object.create():该方法可以指定原型对象和属性,返回一个新的对象。
    • Object.getPrototypeOf():获取对象的Prototype对象。

    2 Object 的实例方法

      除了静态方法,还有不少方法定义在Object.prototype对象。

      它们称为实例方法,所有Object的实例对象都继承了这些方法。

      Object实例对象的方法,主要有以下六个。

    • Object.prototype.valueOf():返回当前对象对应的值。
    • Object.prototype.toString():返回当前对象对应的字符串形式。
    • Object.prototype.toLocaleString():返回当前对象对应的本地字符串形式。
    • Object.prototype.hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
    • Object.prototype.isPrototypeOf():判断当前对象是否为另一个对象的原型。
    • Object.prototype.propertyIsEnumerable():判断某个属性是否可枚举。

    2.1 Object.prototype.hasOwnProperty()

      Object.prototype.hasOwnProperty方法接受一个字符串作为参数,

      返回一个布尔值,表示该实例对象自身是否具有该属性。

    var obj = {
      p: 123
    };
    
    obj.hasOwnProperty('p') // true
    obj.hasOwnProperty('toString') // false
    

      上面代码中,对象obj自身具有p属性,所以返回truetoString属性是继承的,所以返回false

     

    文章内容转自 阮一峰老师 JavaScript教程 https://wangdoc.com/javascript/index.html

     

  • 相关阅读:
    Vue 组件封装发布到npm 报错 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
    SpringBoot thymeleaf模板版本,thymeleaf模板更换版本
    SpringBoot application.properties (application.yml)优先级从高到低
    SpringBoot Cmd运行Jar文件指定active文件的命令如下
    Linux各文件夹的作用
    spring + Mybatis + pageHelper + druid 整合源码分享
    MyEclipse weblogic Deploy Location项目名称不正确解决方案
    Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x
    An internal error occurred during: "Launching xxx on WebLogic10.x".
    Spring集成Mybatis,spring4.x整合Mybatis3.x
  • 原文地址:https://www.cnblogs.com/WernerWu/p/11354441.html
Copyright © 2011-2022 走看看