JavaScript总结4

1.对象的创建 单个对象的创建

    1.对象字面量

        var obj = {name: "stk",age: 16,sayName() {console.log(this.name);}}

    2.构造函数

        var obj1 = new Object();

        obj1.name = "lisi";

2.对象的访问

    1.访问属性 点访问法

        console.log(obj.name);

    2.中括号访问法 可以解析变量

        console.log(obj['sayName']());

    3.遍历对象 key属性名 obj[key]该属性名对应属性值

        for (let key in obj) {console.log(key,obj[key]);}

3.对象的删除

    删除一个属性 delete

        delete obj.name;

        delete obj['name'];

4.对象的新增

    obj['name'] = 'zhangsan';

5.将对象转为Boolean

    var obj = {name: 'zhangsan'};

6.将对象转为String

    console.log(obj.toString(),typeof (obj.toString()));

    console.log(String(obj), typeof (String(obj)));

    console.log(obj+"",typeof (obj+""));

    console.log(obj.valueOf(),typeof (obj.valueOf()));

7.将对象转为number

    console.log(Number(obj), typeof (Number(obj)));

    console.log(+obj,typeof (+obj));

    console.log(parseInt(obj), typeof (parseInt(obj)));

    console.log(parseFloat(obj), typeof (parseFloat(obj)));

    如果重写tostring 所有转number方法都会调用tostring

    如果重写了valueOf Number() 和 + 会调用valueOf

    如果两个方法都重写Number() 和 + 会调用valueOf;parseInt和parseFloat调用toString

8.检测属性  

    '属性' in obj

        检测属性是否是自有或者继承属性 in  

            是自有或继承 返回true 否则为false

    hasOwnProperty

        检测属性是否是自有属性 对于继承属性返回false

    propertyIsEnumerable

        检测属性是否为可枚举属性

8.静态方法 定义属性

    定义一个属性 可删除 可枚举 可修改

        Object.defineProperty(object,'',{

            //数据属性

            configurable:true/false //true可删除

            writable:true/false  //true可写

            value:'',

            enumerable:true/false //true可枚举  不可使用for in遍历

        })

    定义多个属性

        Object.defineProperty(object,{

            name:{

                //数据属性

                configurable:true/false //true可删除

                writable:true/false  //true可写

                value:'',

                enumerable:true/false //true可枚举  不可使用for in遍历

            },

            age:{},

            gender:"{}

           

        })

    获取属性特性

        读取一个属性特性

        getOwnPropertyDescriptor(object,'name')

        getOwnPropertyDescriptor(object,'age')

        读取多个属性特性

        getOwnPropertyDescriptor(object)

    访问器属性 控制私有属性的修改和读取

        var obj ={

            _yaer:2023

        };

        Object.defineProperty(obj,'yaer',{

            //读取year时触发

            get:function(){

                return this._yaer;

            }

            //不提供set函数 不可以直接修改yaer属性 和_yaer属性

            set:function(newYear){

                if(this._yaer!=newYear){

                    this._yaer=newYear;

                }

                   

            }

        });

        obj.year=2024;

    对象的序列化和反序列化 可以实现深拷贝

        1.序列化 将对象转换为json字符串

            JSON.stringify(obj) {"name":"zhangsan","age":12}

        2.反序列化 将JSON字符串转为对象

            JSON.parse(JSON.stringify(obj)) {name:"zhangsan",age:12}

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值