问题出在哪

来源:5-7 编程练习

weibo_我是LUFFCIER_0

2019-11-09 11:38:50

<!DOCTYPE html> 

<html> 

<head> 

    <meta charset="UTF-8" /> 

    <title>方法的调用</title> 

</head> 

<body> 

    <script type="text/javascript"> 

   // 在此处完成任务

   var person={

       setPerson:function(prpperty,value){

           this.property=value;

           

       }

   };

   person.setPerson(name,'xm');

   person.setPerson(age,18);

   person.setPerson(sex,'male');

   document.write('name : ' + person.name + '<br>',

'age : ' + person.age + '<br>',

'sex : ' + person.sex) 

    </script> 

</body> 

</html>

  


写回答

3回答

好帮手慕星星

2019-11-12

同学你好,

{}对象中属性名有引号或者没有引号是没有区别的。但是通过[]方式获取的时候,必须添加引号变为字符串,否则就是未定义的变量。

例如:

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

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

这两种方式是正确的。

还有一种情况属性名为变量的时候,只能通过[]的方式获取,这时候就不需要添加引号了,如下:

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

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

自己可以再测试理解下。如果我的回答帮助到了你,欢迎采纳~

祝学习愉快!

0

好帮手慕星星

2019-11-10

同学你好,

这里和视频中不一样哦,视频中是在{}字面量对象中写属性名的时候,合法字符就可以不加引号:

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

但是这里是在调用setPerson方法进行传参,虽然传入的是属性名,但是实际上还是实参哦,实参和字面量对象中属性名不一样。

实参如果不加引号,就是变量,如果代码中没有定义这个变量,直接使用就会报错。所以这里传参的时候需要添加引号变为字符串。自己可以再测试下哦。

如果我的回答帮助到了你,欢迎采纳~

祝学习愉快!

0
heibo_我是LUFFCIER_0
h 好的老师,这点我明白了。另外有个问题,对象当中的属性名带引号和不带引号有区别吗,因为我发现调用setPerson方法进行传参后,person.name和 person['name']可以获取属性值,但是person[name]却不行,为什么呢
h019-11-11
共1条回复

好帮手慕糖

2019-11-09

同学你好,代码中有如下问题:

1、属性名这里是字符串,应该添加引号哦。例:

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

2、setPerson方法这里,单词拼写错误,参数名是prpperty,使用的是prperty,两个是不一致的哦,应该要使用一致。

且,直接使用点添加属性的话,会添加一个名为prpperty的属性(不是代表变量了),若要使用传递过来的值,需要使用[]哦。

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

如果我的回答帮到了你,欢迎采纳。

祝学习愉快!

0
heibo_我是LUFFCIER_0
h 课程不是说属性名是合法字符的话就不用加引号吗,为什么这里要加
h019-11-09
共1条回复

0 学习 · 14456 问题

查看课程