为何打印的是未定义?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>方法的调用</title>
</head>
<body>
<script type="text/javascript">
// 在此处完成任务
var person={
setPerson:function (per,val){
this.per=val;
},
};
person.setPerson(name,"xm");
console.log(person.name);
</script>
</body>
</html>为何打印的是未定义?
31
收起
正在回答
3回答
传实参的时候要这样哦,否则name会被当做没有赋值的变量传入

红星双子
2017-11-19 15:10:15
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>方法的调用</title>
</head>
<body>
<script type="text/javascript">
// 在此处完成任务
var person={
setPerson:function (per,val){
this[per]=val;//这里用中括号而不用“.”是因为per相当于该方法中的一个变量,如果用“.”来调用,解析器会误以为per就是属性名本身。
},
};
person.setPerson(name,"xm");//这里定义了一个键值对
console.log(person[name]);//上面已经定义了name属性,为何这里还要用中括号呢?如果用“.”就会提示未定义
</script>
</body>
</html>问题解决了,不过还是不明白???????
相似问题
登录后可查看更多问答,登录/注册
HTML5与CSS3实现动态网页 2018
- 参与学习 1887 人
- 提交作业 4643 份
- 解答问题 5760 个
有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。
了解课程
per就会被当做成员属性被定义,而不再是变量了。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星