ES5静态方法

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// 静态方法(构造函数的方法)

// Object.defineProperty(obj,pro,desc)用于定义对象的属性及描述符
// obj 要定义属性的对象
// pro 对象要定义的属性名
// desc 对象属性的描述符对象

// 'use strict'

var obj1 = {
    name: '红浪漫哥哥',
    age: 18,
    _age: 18,
    sex: '男'
}

/* // 描述符第一种配置方式:
Object.defineProperty(obj1,'age',{// 描述符对象
    // 是否可配置(是否可重新修改配置,是否可删除)
    configurable: true,
    // 是否可枚举
    enumerable: true,
    // 是否可读写
    writable: true,
    // 属性的值
    value: 19
}) */

// delete obj1.age // 删除对象属性
// console.log( obj1.age )// undefined

// for (var key in obj1){
//     console.log( key )
// }


// obj1.age = 20
// console.log( obj1.age )

// console.log( obj1.age )// 19



// 描述符第二种配置方式:
// 在属性描述符中可以添加属性访问器 getter 和 setter
// 注意: getter 和 setter 与 writable 和 value 不能同时定义
Object.defineProperty(obj1,'age',{// 描述符对象
    // 是否可配置(是否可重新修改配置,是否可删除)
    configurable: true,
    // 是否可枚举
    enumerable: true,
    // 添加getter
    // get: function (){},
    // set: function (){},
    get(){
        // this -> obj1
        // 当我们访问 obj1.age 时,该函数被调用
        console.log( 'getter被调用...' )
        // get函数的返回值就是对象的age属性值
        // return 22
        return this._age
    },
    set(val){
        // this -> obj1
        // 当我们给age属性赋值时,等号右边的值被传递到set函数中 -> val
        // 当我们设置 obj1.age = xxx 时,该函数被调用
        console.log( 'setter被调用...',val )
        // 用于修改对象的age属性值
        // this.age = val // 导致无限循环调用set
        this._age = val // this._age 中间变量
    }
})

console.log( obj1 )

// 访问对象age属性
console.log( obj1.age )// 18

// 修改对象age属性
obj1.age = 28
console.log( obj1.age )// 28

</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值