美文网首页
JS-Object 对象

JS-Object 对象

作者: Mr_Lin_ | 来源:发表于2021-01-19 14:03 被阅读0次

    一、概述

    JavaScript 原生提供Object对象(注意起首的O是大写),JavaScript 的所有其他对象都继承自Object对象,即那些对象都是Object的实例。

    二、Object()

    Object本身是一个函数,可以当作工具方法使用,将任意值转为对象。这个方法常用于保证某个值一定是对象。

    Object函数的参数是各种原始类型的值,转换成对象就是原始类型值对应的包装对象。

    如果Object方法的参数是一个对象,它总是返回该对象,即不用转换。

    利用这一点,可以写一个判断变量是否为对象的函数。

    function isObject (value) {

        returnvalue ===Object(value);

    }

    isObject([])// true

    isObject(true)// false

    三、Object 构造函数

    Object不仅可以当作工具函数使用,还可以当作构造函数使用,即前面可以使用new命令。

    Object构造函数的首要用途,是直接通过它来生成新对象。

    注意,通过var obj = new Object()的写法生成新对象,与字面量的写法var obj = {}是等价的。或者说,后者只是前者的一种简便写法。

    varo1 = {a:1};

    varo2 = new Object(o1);

    o1 === o2// true

    var obj =new Object(123);

    obj instanceof Number// true

    虽然用法相似,但是Object(value)与new Object(value)两者的语义是不同的,Object(value)表示将value转成一个对象,new Object(value)则表示新生成一个对象,它的值是value。

    四、Object 的静态方法 

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

    1、Object.keys(),Object.getOwnPropertyNames()

        对于一般的对象来说,Object.keys()和Object.getOwnPropertyNames()返回的结果是一样的。只有涉及不可枚举属性时,才会有不一样的结果。Object.keys方法只返回可枚举的属性(详见《对象属性的描述对象》一章),Object.getOwnPropertyNames方法还返回不可枚举的属性名。

        由于 JavaScript 没有提供计算对象属性个数的方法,所以可以用这两个方法代替。

        var obj = {p1:123,p2:456};

        Object.keys(obj).length// 2

        Object.getOwnPropertyNames(obj).length// 2

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

    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对象。

    五、Object 的实例方法

    除了静态方法,还有不少方法定义在Object.prototype对象。它们称为实例方法,所有Object的实例对象都继承了这些方法。

    相关文章

      网友评论

          本文标题:JS-Object 对象

          本文链接:https://www.haomeiwen.com/subject/xdgqoctx.html