老师有个问题
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>5-4</title>
</head>
<body>
<script>
//补充代码
function student(){
var privateStore = {};
function _set(name,sex,age){
privateStore.name = name;
privateStore.sex = sex;
privateStore.age = age;
}
function _get(){
return console.log({
name:privateStore.name,
sex:privateStore.sex,
age:privateStore.age
});
}
this.get = function (){
return _get();
}
this.set = function (){
return _set();
}
}
var student1 = new student();
student1.set()("小明","男","23");
student1.get();
</script>
</body>
</html>
为什么会报错呢
正在回答 回答被采纳积分+1
同学你好,_set是一个方法,如果_set加上括号,那么在调用set方法时,得到的就是_set方法的返回值。而同学在用set方法时,写的是两个括号,如下:
_set方法的返回值不是一个函数了,不能加()调用,因此上方的写法是会报错的。
在上次回答中也提到了,如果想要不报错的话,在调用set方法时,要少加一个括号,也就是如下写法:
因为上方的写法,并不能正确的传递参数,所以得到的会是undefined。如下:
_get加括号了,但是在调用时,是一个括号,如下:
如果像set方法一样,两个括号,那么也是会报错的。
可能会比较绕,同学可以再理解下。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>5-4</title>
</head>
<body>
<script>
//补充代码
function student(){
var privateStore = {};
function _set(name,sex,age){
privateStore.name = name;
privateStore.sex = sex;
privateStore.age = age;
}
function _get(){
return console.log({
name:privateStore.name,
sex:privateStore.sex,
age:privateStore.age
});
}
this.get = function (){
return _get();
}
this.set = function (){
return _set;
}
}
var student1 = new student();
student1.set()("小明","男","23");
student1.get();
</script>
</body>
</html>
不太明白为什么return _set后面的括号去掉就可以了呢?
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星