6、数据代理之Object.definePrpperty方法回顾

number和person明明是两个东西,它就是借助defineProperty,让其之间产生关联。值是现用现取。取是get,改是set
DOCTYPE html>
<html lang="en">
<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>回顾Object.defineproperty方法title>head>
<body><script>number=20let person={ // let声明的范围是块作用域,是局部变量;而var声明的范围是函数作用域,是全局变量name:'张三',sex:'男',}//给person对象再添加一个age属性,值为18Object.defineProperty(person,'age',{ //虽然写法复杂,但是可以对追加的属性能枚举、修改和删除//value:18,// enumerable:true, // 可枚举的,控制属性是否可以枚举,默认值是false console.log(Object.keys(person))// writable:true, //控制属性是否可以被修改,默认值是false person.age=19// configurable:true, //控制属性是否可以被删除,默认值是false delete person.age//这是vue的双向绑定原理//当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值get(){console.log('有人读取age属性了')return number},//当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值set(value){console.log('有人修改了age属性,且值是',value)number=value}})console.log(person)console.log(Object.keys(person))// for (let key in person) {// console.log('@',person[key])// }script>
body>
html>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
