请问问题出在哪里

来源:5-7 编程练习

蛤小蛤

2019-11-04 18:11:33

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <title>方法的调用</title>
  </head>
  <body>
    <script type="text/javascript">
      // 在此处完成任务

      /*  5-7 编程练习
            小伙伴们,请用程序描述下列内容:

            给一个人(person)通过方法(setPerson)添加属性(name: 'xm', age: 18, sex: 'male')。

            该方法接收property和value 2个参数

            任务

            1.     先定义person对象。

            2.     对象内,通过定义setPerson方法,用于添加相应属性(name: 'xm', age: 18, sex: 'male')。

            setPerson方法有两个参数property和value,用于接收相应属性及值。

            setPerson方法内实现相应属性与值的赋值。

            3.    最后通过person.setPerson方法给对象添加以下属性。(name: 'xm', age: 18, sex: 'male') */

      var person = {};
      person.setPerson = function(property, value) {
        if (property == name) {
          this.name = value;
        } else if (property == age) {
          this.age = value;
        } else {
          this.sex = value;
        }
      };
      person.setPerson(name, "xm");
      person.setPerson(age, 18);
      //   person.setPerson(sex, "male");
      console.log(person);
    </script>
  </body>
</html>


写回答

1回答

樱桃小胖子

2019-11-04

同学你好,name和age是变量,没有定义使用就会报错。但是name比较特殊,window对象中有这个属性,可以直接使用,没有age属性,使用就会报错。

代码中不需要判断,直接设置属性就好,如下修改:

http://img.mukewang.com/climg/5dc0019509a67b2e06460239.jpg

结果:

http://img.mukewang.com/climg/5dc0019c09c4f65905880039.jpg

需要注意的是,当属性名为变量的时候,不能用点的方式进行设置,会直接将变量当做属性。例如:

http://img.mukewang.com/climg/5dc001e909ef20ff03160119.jpg

http://img.mukewang.com/climg/5dc001e7092369b201510032.jpg

变量a作为了属性,而不是变量a的值age哦,所以这里使用[]的方式进行设置。

自己修改测试下,祝学习愉快!

欢迎采纳~

0

0 学习 · 14456 问题

查看课程