有两个不明白的地方

来源:5-4 编程练习

JovetWang

2020-06-19 12:19:26

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>5-4</title>
</head>
<body>
<script>
//补充代码 
function students(){
var student = {};
function _set(name, sex, age){
student.name = name;
student.sex = sex;
student.age = age;
};
function _get(){
console.log(student.name+"---"+student.sex+"---"+student.age);
};
this.set = function (name, sex, age) {
    _set(name, sex, age);
};
this.get = function () {
    return _get;
};
};
var stu = new students();
stu.set("Ming", "Male", 18);
stu.get()();
</script>
</body>
</html>

第一,后面的set和return为什么要用this?
第二,在赋值给stu之后,为什么打印stu.student为undefined?

写回答

1回答

好帮手慕慕子

2020-06-19

同学你好,先了解一个知识点,函数中使用this定义的属性和方法, 实例化之后可以通过点(.)的方式访问到, 如果没有使用this定义的属相和方法可以理解为函数的局部属性和方法(私有的),外部不可以直接通过点的当时访问到

对于你的问题解答如下:

  1. 是想问为什么set和get方法要使用this吗?如果是这样的话,那么是因为这里通过this将这个两个方法挂载到构造函数student的实例化对象上,这样实例化对象就可以访问两个方法设置和获取构造函数内部的私有对象student的信息

  2. 因为在函数内部直接使用var声明的student对象属于局部变量,外部无法访问,那么久无法通过stu.student的方式访问到,所以打印结果是undefined

  3. 代码实现是正确的

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

0

0 学习 · 14456 问题

查看课程