javascript之Object详解

前言

在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

方法有点多, 理解记忆即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值