美文网首页
javascript权威指南笔记-对象

javascript权威指南笔记-对象

作者: wuxiaodou | 来源:发表于2018-03-15 22:02 被阅读0次

    对象的对象特性

    • 对象的原型,指向另一个对象,本对象的属性继承自他的原型对象
    • 对象的类,标识一个对象类型的字符串
    • 对象的扩展标记,指明是否可以向该对象添加新属性

    创建对象

    • 对象直接量
      对象直接量是一个表达式,这个表达式的每次运算都会创建并初始化一个新的对象。
    • 通过new创建
    • 原型
    • Object.create()创建(es5)
    var o1 = Object.create({x:1,y:2}) // o1继承了属性x和y
    console.log(o1.x)                 // 1     
    

    若传入null,则创建一个没有原型的对象

    继承

    假设要查询对象o的属性x,如果o中不存在x,那么将会在o的原型对象中查询属性x,如果原型对象中也没有x,但这个原型对象也有原型,那么继续在这个原型对象上执行查询,直到找到x或者查到一个原型是null的对象为止。(原型链)

    function inherit(o){
        if (o == null)  throw TypeError()
        if (Object.create) {
            return Object.create(o)
        }
        var t = typeof o
        if ( t == 'object' && t !== 'function' ) throw TypeError
        function f(){}
        f.prototype = o
        return new f()
    }
    

    删除属性

    delete运算符只是断开属性和宿主对象的联系,而不是去操作属性中的属性。只能删除自有属性,不能删除继承属性。

    检测属性

    • in运算符
    • hasOwnProperty() 属性是否是自由属性,继承属性返回false
    • propertyIsEnumerable() 是自由属性并且是可以枚举的

    枚举属性

    对象继承的内置方法是不可以枚举的,但是在代码中给对象添加的属性都是可以枚举的
    用for/in可以遍历枚举属性

    • Object.keys() 返回一个数组,是由对象中可枚举的自有属性的名称组成。
    • Object.getOwnPropeytyNames() 返回对象的所有自有属性的名称

    setter 和 getter

    es5中,对象的属性可以用一个或两个方法代替,就是getter和getter。由 getter和setter定义的属性称为“存储器属性”。他不同于数据属性,数据属性只是一个简单的值。

        var o = {
            // 普通的数据属性
            data_prop: value,
    
            // 存储器属性都是成对定义的函数
            get accessor_prop() { },
            set accessor_prop() { }
        }
    

    存储器属性也是可以继承的

    属性的特性

    • 数据属性的特性:值,可写性,可枚举,可配置
    • 存储器属性的特性:读取,写入,可枚举性和可配置性
      利用 Object.getOwnPropertyDescriptor()可以获取属性描述符的对象(自有属性的)

    设置属性的特性:
    Object.defineProperty()

        var 0 = {}
        Object.defineProperty(o,"x",{
            vaule: 1,
            writable: true,
            enumerable: false,
            configurable: true
        })
    

    设置多个属性特性:

    var p = Object.defineProperties,{
        x: { value: 1, writable: true,... }
        // 存储器属性
        r : {
            get: function() { return ... }
            enumberable: true,
            ...
        }
    })
    

    相关文章

      网友评论

          本文标题:javascript权威指南笔记-对象

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