javascript之Object详解

版权声明:杨念 https://blog.csdn.net/qq_34178990/article/details/81222987

前言

在javascript中, 对象是我们都在用的, 但是呢,并不是每个人都对Object十分了解。 本文也是在自己对Object记忆有点模糊之后,重新复习的产物。

对象的操作

关于说对象是啥, 这里就不赘述了。 直接入正题。

关于对象, 我们一般会进行哪些操作?

1. 对象的创建
2. 对象属性及属性值的设置
3. 对象属性值的获取、修改
4. 对象的遍历
5. 对象属性的删除
6. 对象属性本身的配置

以上就常常出现的几种操作。

操作详解

  1. 对象的创建

    对象的常见有三种方法:
        1. 对象直接量
            var obj = {test: 'test'}
        2. 关键字new
            new调用构造函数
        3. Object.create()
            该方法传入两个参数, 一个对象的原型, 一个是对象自己的描述
    
  2. 对象属性及属性值的操作

    通过“.”“[]”运算符进行属性的添加,修改,获取属性值。
    

3.属性的删除

使用delete运算符,删除对象的属性,delete只是断开属性和宿主对象的联系, 而不会去操作属性中的属性

delete obj.test

3. 属性值的遍历

    ES3之前使用for/in方法进行遍历, 但是会遍历原型上的属性, 
    这样是好的, 所以需要使用hasOwnProperty方法来判断是否是自己而非原型上的属性。
    例如:
    for(p in obj){
        if(!o.hasOwnProperty(p)) continue
        //做些操作
    }   

    ES5提供了两个新的方法用于遍历:
    Object.keys(obj), 返回obj对象上可枚举的属性组成的数组
    Object.values, 返回obj对象上可枚举属性的属性值组成的数组   
    Object.getOwnPropertyNames()返回所有包括不可遍历的属性名组成的数组

4. 对象属性本身的配置

    一个对象的属性, 包括了四个特性:属性值(value)、可写性(writable)、可遍历性(enumerable)、可配置性(configurable)
    使用Object.getOwnPropertyDescriptor()可以获取某个对象特定属性的属性描述:
    Object.getOwnPropertyDescriptor(obj, 'test')
    返回结果如下:
    {configurable:false,enumerable:false,value:"123",writable:false}

    使用Obejct.getOwnPropertyDescriptors()返回所有属性的描述:
    Object.getOwnPropertyDescriptors(obj)
    返回结果如下:
    {
            test:{configurable:false,enumerable:false,value:"123",writable:false}
            test1:{configurable:false,enumerable:false,value:"123",writable:false}
    }

    使用Object.defineProperty()来对特性进行设置:
    Object.defineProperty(obj, 'test', {
        value: 1,
        writable: true,
        enumerable: false,
        configurable: true
    })

对象的三个属性

  1. 原型属性

    原型属性是用来继承原型的。 可用getProperyOf来获取原型。 也可以通过__proto__属性来获取
    
  2. 类属性

    描述对象的类型信息的。 使用toString可以放回该属性值(Object.property上的toString)。 
    
  3. 可扩展性

    表示是否可以给对象添加新的属性。 
    通过Object.isExtensible()判断是否可扩展
    通过Object.preventExtensions()将对象变为不过扩展
    通过Object.seal()将对象设置不可扩展, 并将属性设置为不可配置
    通过Object.isSeal()查看对象是否封闭
    通过Object.freeze()将对象设置为不可配置, 还将自身所有数据属性设置为
    通过Object.isFreeze()查看对象是否冻结     
    

结尾

文本中的那些方法:
1. Object.create
2. delete obj.test
3. for/in
4. Object.keys
5. Object.values
6. Object.getOwnPropertyNames
7. Object.getOwnPropertyDescriptor
8. Object.getOwnPropertyDescriptors
9. Object.defineProperty
10. Object.definePropertys
11. Object.getPropertyOf
12. Object.isExtensible
13. Object.preventExtensions
14. Object.seal
15. Object.isSeal
16. Object.freeze
17. Object.isFreeze

方法有点多, 理解记忆即可

猜你喜欢

转载自blog.csdn.net/qq_34178990/article/details/81222987
今日推荐