请老师检查

来源:3-4 编程练习

qq_慕先生0342934

2020-06-10 23:17:47

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>

<body>

    <script type="text/javascript">  

        // json格式

        // var obj = {

        //     name : 'imooc',

        //     action : function(){

        //         alert('前端');

        //     }

        // }

        // Object方式

        // var obj = new Object();

        // obj.name = 'imooc';

        // obj.action = function(){

        //     alert('前端');

        // }

        // 构造函数方式

        function obj(name, action){

            this.name = name;

            this.action = function(){

                alert('前端');

            };

        }

        // var fn = new obj('name');

        //老师这一步为啥不能少啊,上面那个不是已经是完整的函数了么

        var fn = new obj('imooc');

        console.log(fn.name);

        fn.action();

    </script>

</body>

</html>


写回答

2回答

好帮手慕言

2020-06-12

同学你好,构造函数中的this指向实例化对象,fn就是实例化出来的对象。

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

如果同学是下方的写法:

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

那么,this指向函数的调用者,obj是window调用的,因此obj里的this指向的是window。

祝学习愉快~

0
hq_慕先生0342934
h 还是不太明白,我再去看几遍视频吧,谢谢老师
h020-06-12
共1条回复

好帮手慕夭夭

2020-06-11

同学你好,代码实现正确。另外,注释的问题解答如下:

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

因为obj是一个构造函数,在里面通过this定义了属性和方法。要通过new去实例化一个具体的对象来使用。给同学打一个比喻,这个构造函数就相当于一个类,假如我们定义的类是一个人类,那么人类保存了很多相同的特性  ,例如人类都有名字. 而通过new实例化出来的就是具体的一个对象 , 例如张三 , 李四 ...所以构造函数可以通俗的理解为一个加工厂,通过new去加工东西。如果空有一个工厂,啥工作都不干,那工厂还有什么意义呢。

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

0
hq_慕先生0342934
h 老师,请问上面的工厂函数哪个this指向哪里啊,打个比方说我直接调用 obj('xm'),这个时候不就是应该指向obj他自己么,下面执行就是 obj.name = 'xm'; 这样么,我感觉就是这点理解不了
h020-06-11
共1条回复

0 学习 · 14456 问题

查看课程