对访问器属性的一些理解
红宝书的一段代码如下:
//定义一个book对象 var book={ _year:2004, edition:1 }; Object.defineProperty(book,"year",{ get:function(){ return this._year; }, set:function(newValue){ if(newValue>2004){ this._year=newValue; this.edition+=newValue-2004; } } }); book.year //2004
改写一下这个代码:
//定义一个book对象 var book={ _year:2004, edition:1 }; Object.defineProperty(book,"year",{ get:function(){ console.log(“调用了get方法”); return this._year; }, set:function(newValue){ console.log("调用了set方法"); if(newValue>2004){ this._year=newValue; this.edition+=newValue-2004; } } }); book.year; //调用了get方法 //2004 book.year=2005; //调用了set方法 //2005
直接调用 book.year
,即调用了这个访问器属性中定义的 get
方法,返回 book._year
这个数据属性。如果给 book.year
赋值,就是调用了这个访问器属性中定义的 set
方法。
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步