Skip to content

偷梁换柱

作者:江月迟迟
发表于:2024-12-10
字数统计:591 字
预计阅读2分钟

介绍

随着医疗水平的进步,人的平均寿命在慢慢提升。现在全球平均预期寿命是 73.2 岁,而在 1950 年则只有 47 岁。那么人类的寿命有极限吗?根据最新的研究,人类寿命或超过 120 岁,达到 150 岁。

因此,有关年龄的应用普遍将当今人类的合理年龄范围设置在 0 - 150 岁之间。那么,当一个年龄被录入,我们又是如何判断其是否合理的呢?

准备

本题已经内置了初始代码,打开实验环境,目录结构如下:

bash
├── age.js
└── index.html

其中:

  • index.html 是主页面。
  • age.js 是需要补充代码的 js 文件。

目标

在文件 age.js 中,有一个 person 对象,当它的 age 属性值改变时需要对新值做判断,将其永远控制在 0 - 150 之间。具体需求如下:

img

  • 如果新属性值在 0 -150 之间(包含 0 和 150),则直接更新。
  • 如果新属性值小于 0,则属性值更新为 0。
  • 如果新属性值大于 150,则属性值更新为 150。

提示:可以使用 Object.defineProperty 或者 Proxy 对 person 对象进行处理。

完成后,最终页面效果如下:

img

规定

  • 题目使用 JavaScript 完成,不得使用第三方库。
  • 只能在 age.js 中指定区域答题,不能修改 index.html 中的任何代码。
  • 请不要修改环境自动生成的 age.js 以及 index.html 文件的文件路径以及文件名。
  • 检测时使用的输入数据与题目中给出的示例数据可能是不同的。考生的程序必须是通用的,不能只对需求中给定的数据有效。
  • 满足题目需求后,点击「提交检测」系统会自动判分。

判分标准

  • 本题完全实现题目目标得满分,否则得 0 分。

总通过次数: 1035 | 总提交次数: 1087 | 通过率: 95.2%

难度: 中等 标签: 2022, 省模拟赛, Web 前端, JavaScript

题解

js
let val = person.age

Object.defineProperty(person,'age',{
  get(){
    return val
  },
  set(newval){
    console.log(val)
    console.log(newval)

    if(newval >= 150){
      val = 150
    }else if(newval < 0){
      val = 0
    }else{
      val = newval
    }

    return val
  }
})