请问默认值是设置在constructor 中吗,还是像我写的这样就行
来源:3-6 编程练习
yinikko
2020-02-10 23:45:38
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
let year = prompt("请输入年份");
// 补充代码
class people{
constructor(){
}
get age(){
return this._age;
}
set age(val){
let currentYear = new Date().getFullYear();
if(val>=1000&&val<=currentYear){
this._age=currentYear-val;
}else{
this._age=18;
}
}
}
let a = new people();
a.age = year;
console.log(a.age);
</script>
</body>
</html>
3回答
同学你好 ,可以在get和set方法中测试输出内容,当你给age赋值时,就会触发set方法,读取age时,就会触发get方法。示例:

结果如下:set和get方法是有作用的。

同学可以结合示例测试一下。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
好帮手慕慕子
2020-02-11
同学你好,对于你的问题解答如下:
不是必须要设置在constructor中的,同学的这种写法也是可以的。
当你改变属性值时,默认会触发set函数,当你获取属性值时,默认会触发get函数,所以我们可以在这两个函数中设置这个属性是如何修改与获取的,然后直接调用属性即可,
同学粘贴的第二种写法直接使用固定的年份2020减去输入的年份,没有考虑如果输入不争取的情况。推荐使用get和set在内部设置,外部直接调用即可。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
yinikko
提问者
2020-02-10
还有一个疑问,get和set的作用是什么呢,像这样去掉不也能得出结果吗
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
let year = prompt("请输入年份");
// 补充代码
class people{
constructor(){
}
// get age(){
// return this._age;
// }
// set age(val){
// let currentYear = new Date().getFullYear();
// if(val>=1000&&val<=currentYear){
// this._age=currentYear-val;
// }else{
// this._age=18;
// }
// }
}
let a = new people();
a.age = 2020-year;
console.log(a.age);
</script>
</body>
</html>