偷梁换柱

习题链接

偷梁换柱

任务

现在有一个person对象,里面存储了一个人年龄age属性 要求在对age进行录入的时候,值在0-150之间正常赋值 若值小于0 就赋 0 若值大于150 就赋 150

关键点

  1. Object.defineProperties(目标对象,{在这里操作该对象的属性}) 操作多个属性的
    1. 目标对象是一个object对象即可
    2. {在这里操作该对象的属性}要对目标对象的属性进行描述
    3. 这个时候知道你听的很懵 只需要记得在这个{}括号里面是要操作对象里面的属性的
    4. 一个属性里面四个描述符号 最下方会告诉语法结构如何编写
      1. value:0, // =>值
      2. configurable:true, // =>默认值true,是否可以被删除再重新定义,若值为false,这个属性就无法被删除
      3. enumerable:true, // =>默认值true,在for in中是否可以遍历
      4. writable:true // =>默认值true,是否可以被修改,若是在defineProperties,或defineProperty中定义的属性,需要写明这个描述writable:true
    5. 一个属性还有两个方法
      1. get访问属性随之触发该函数
      2. set设置属性值,随之触发,可以对设置的值进行一个拦截,这个题目就是在set中进行拦截,但切不可使用this.当前属性值,否则会爆栈,直接报错
  2. Object.defineProperty(目标对象,目标属性,{操作当前属性}) 操作单个属性的

代码实现 && 完整的代码

  1. 完整code
    // 请不要更改这个对象里面的内容 let person = { age: 0, }; // TODO:在这里写入具体的实现逻辑 // 对 person 的 age 属性更新行为进行拦截 // 如果输入的年龄在 0 - 150 之间,则认为是合法 // 否则,如果小于 0,则返回 0;如果大于 150,则返回 150 Object.defineProperties(person,{ 'age_':{ value:0, // =>值 writable:true // =>是否可以被修改 }, 'age':{ get(){ return this.age_; // 访问的旧属性=>返回新属性值 }, set(newValue,oldValue){ // 给旧属性设置值=>给新属性设置值 if(newValue < 0) this.age_ = 0; else if(newValue >= 0 && newValue < 150) this.age_ = newValue; else this.age_ = 150; } } }) module.exports = person; // 检测需要,请勿删除

__EOF__

本文作者GTK
本文链接https://www.cnblogs.com/DnmyCourage/p/17450862.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   GTK  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示