这种情况下,如何输出实例name,sex和age的值?

这种情况下,如何输出实例name,sex和age的值?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>5-4</title>

</head>

<body>

<script>


//补充代码 

    function student(name,sex,age){

        var obj = {};

        function _set(){

            obj.name = name;

            obj.sex = sex;

            obj.age = age;

        }

        this.set = function(){

            return _set;

        }

    }

    var obj1 = new student("zhang","man","18");

    

</script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕夭夭 2019-09-26 09:46:36

你好同学,你的理解不对。首先obj1是没有name属性的。这里涉及到实例化对象的继承问题了。后面的课程中会讲到继承相关的内容。老师先给你讲一下。

在这个代码中,student是构造函数。obj1是通过 new student实例化的具体对象,它继承student中定义的属性和方法。student没有定义name,所以obj1自然也不会有name属性。

http://img1.sycdn.imooc.com//climg/5d8c158509fd221d07100165.jpg

student中只定义了两个方法,也就是如下。变量obj以及函数 _set和函数_get都是student内部私有的。在外部拿不到的。所以实例化对象obj1只有set和get两个方法。(即如下圈出的)

http://img1.sycdn.imooc.com//climg/5d8c15d9092c7b8b04420335.jpg

而 student("zhang", "man", "18")只是给student传递了实际的参数。所以函数中的形参name, sex, age会接收这些实参的值。具体执行看如下:http://img1.sycdn.imooc.com//climg/5d8c180a093f40c309680744.jpg

祝学习愉快,望采纳。

好帮手慕夭夭 2019-09-25 18:22:54

你好同学,这种情况下是没有办法获取到的,首先你这里在student虽然传递了参数,但是给obj设置属性是在_set函数中,函数需要调用才会执行。即没有给obj添加上数据。

另外,obj是函数内部的变量,外部拿不到。需要根据任务步骤,定义一个获取数据的函数,然后使用方法返回它。根据练习要求,如下修改:

http://img1.sycdn.imooc.com//climg/5d8b3ff809cfd2b110610805.jpg

祝学习愉快,望采纳。

  • 提问者 张乔升 #1
    感谢回答。还是想继续请教:new方法创建obj1 var obj1 = new student("zhang","man","18"); 这句创建出来的obj1已经有name、sex和age值了吗? 我自己的代码梳理是:当调用new方法时,创建出了obj1。但此时的obj1里面只有4个函数,而没有真正进入_set()函数里面去创建属性+值。只有当调用set()进入到_set()里面之后,才真正创建了属性+值。但是此时的属性和值,为什么不能直接通过obj1.name获取,而必须通过_get()来获取,这里面的经过,理解不了。
    2019-09-25 20:38:51
  • 提问者 张乔升 #2
    可以详细讲一下set和get在整个函数和执行过程的经过吗?感谢?
    2019-09-25 20:39:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师