请问默认值是设置在constructor 中吗,还是像我写的这样就行

请问默认值是设置在constructor 中吗,还是像我写的这样就行

<!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方法。示例:

http://img1.sycdn.imooc.com//climg/5e42697c09ed9a0512140950.jpg

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

http://img1.sycdn.imooc.com//climg/5e4269b8097da1ea10320398.jpg

同学可以结合示例测试一下。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕慕子 2020-02-11 09:49:59

同学你好,对于你的问题解答如下:

  1. 不是必须要设置在constructor中的,同学的这种写法也是可以的。

  2. 当你改变属性值时,默认会触发set函数,当你获取属性值时,默认会触发get函数,所以我们可以在这两个函数中设置这个属性是如何修改与获取的,然后直接调用属性即可,

    同学粘贴的第二种写法直接使用固定的年份2020减去输入的年份,没有考虑如果输入不争取的情况。推荐使用get和set在内部设置,外部直接调用即可。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 yinikko #1
    我的意思是我感觉在这个作业中get和set没有起到作用,只是单纯的给a的age属性赋值然后直接读取,没有经过get和set
    2020-02-11 16:12:12
提问者 yinikko 2020-02-10 23:53:11


还有一个疑问,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>


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师