JS第十六节 面向对象3

本文详细介绍了JavaScript中对象属性的设置,包括defineProperty方法的使用,数据属性的配置,以及对象的访问属性get和set。此外,还探讨了Vue的MVVM原理实现,并讲解了JavaScript的继承方式,如原型链继承、构造函数继承、组合继承等,以及它们的优缺点。最后,文章提到了原型式继承、寄生式继承和寄生组合式继承,展示了JavaScript继承的多种实现策略。
摘要由CSDN通过智能技术生成

一.对象属性设置 -- defineProperty
1.Object.getOwnPropertyDescriptor() 获取对象属性

    var Person={
        name:"zs",
    }
    var des=Object.getOwnPropertyDescriptor(Person,"name")
    console.log(des.value) //zs
    console.log(des.configurable) //true
    console.log(des.writable) //true
    console.log(des.enumerable) //true   在对象里面直接定义都为true

2.****对象的数据属性
    value           属性的属性值
    configurable    能否删除属性的值
    writable        能否修改属性的值
    enumerable      能否遍历(枚举)属性的值

(0)var Person={}
    Object.defineProperty(Person,"name",{value:"zs"})
    var des=Object.getOwnPropertyDescriptor(Person,"name")
    console.log(des.value) //zs
    console.log(des.configurable) //false
    console.log(des.writable) //false
    console.log(des.enumerable) //false    对象为空时都为false

(1)writable  能否修改属性的值
    Object.defineProperty(Person,"name",{value:"zs",writable:false})
    console.log(Person.name) //zs
    Person.name="ls" //修改失败
    console.log(Person.name) //zs

(2)enumerable  能否遍历(枚举)属性的值
    Object.defineProperty(Person,"name",{value:"zs",enumerable:false})
    var v1=Object.keys(Person)
    console.log(v1)

(3)configurable  能否删除属性的值
    Object.defineProperty(Person,"age",{value:"21",configurable:true})
    console.log(Person.age) //21
    delete Person.age
    console.log(Person.age) //undefined

3.对象的访问属性
    get: 在读取属性时调用的函数
    set: 在写入属性时调用的函数

    var Person={"_name":"zs",age:23}
    var v1=""
    Object.defineProperty(Person,"name",
                        {get:function(){
                            // console.log("get...")
                            return this._name
                        },
                        set:function(val){
                            console.log("set...",val)
                            if(val=&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值