javascript深刻浅出 对象

 

对象结构web

    属性标签:json

        可写    writablethis

        可配置    configurablespa

        可遍历    enumerableprototype

        获取/设置code

            get/setorm

1
2
3
4
5
6
7
8
9
var  obj = {
     $name :  null ,
     get  name(){
         return  this .$name+ '-fix'
     },
     set  name(val){
         this .$name = val;
     }
};

    对象标签:对象

        [[proto]]
继承

            原型实现继承ip

        [[class]]

            获取对象类型

1
2
3
function  getType(o) {
     return  Object .prototype.toString.call(o).slice( 8 ,- 1 );
}

        [[extensible]]

            isExtensible

                是否可扩展

                阻止扩展    Object.preventExtensions(obj)

            isSealed

                是否可扩展、可配置

                阻止扩展和配置    Object.seal(obj);

            isFrozen

                是否可扩展、可配置、可写

                阻止可扩展、可配置、可写    Object.freeze(obj);

    值:

        value


对象建立

    字面量:

    new构造方法/原型链:

    Object.create(字面量):

        字面量做为原型

对象操做

    属性操做:

        属性读写

            不存在写会报错

            不存在读不报错

        属性删除

            可删除和不存在的返回true

            不可删的会报错

        属性检查

            in    是否存在,包含原型链

1
'x'  in  obj

            hasOwnProperty    是否存在,不包含原型链

1
obj.hasOwnProperty( 'x' )

            propertyIsEnumberable    是否能够遍历

1
obj.propertyIsEnumerable( 'x' )

        属性标签订义

            字面量定义

                writable,configurable,enumerable默认为true

            使用defineProperty

                writable,configurable,enumerable默认为false

        获取属性标签描述

1
Object .getOwnPropertyDescriptor(对象, '属性' )


    序列化:

        json序列化

1
var  json_str = JSON.stringify(obj);

        json反序列化

1
var  str = JSON.parse(json_str);

        自定义

1
2
3
4
5
6
7
to_json : {
     a :  1 ,
         b :  2 ,
         toJSON :  function  () {
         return  this .a+ this .b;
     }
}

        注意

            值为undefined 会去掉

            值为NaN,Infinity 转为null

            new Date 转为 UTC格式

    对象转基本类型:

        toString

        valueOf

    ​    ​    ​valueOf 优先toString

    ​    ​    ​定义valueOf

1
2
3
test_o.valueOf =  function  () {
     return  'value ' ;
};
相关文章
相关标签/搜索