救救孩子吧!!!

救救孩子吧!!!

 function animal(name,num){

             this.name=name;     

             this.num=num;

             console.log(this);  //1.证明这里的this指向window.

             this.show=function(){

                 alert(this.name+':'+this.num); //2.实例化后this指向了animal.

                 console.log(this);

             };

         }

         /* 验证最初使用构造方法时this的指向 */

         /* animal('lisi',15);

         window.show(); */


         var test=new animal('cat',5);//这一步不是很明白这个new是怎么工作的?他怎么使得this指向了animal?

         //使用new后会自动执行如下操作:①创建一个新对象;②将构造函数的作用域赋给新对象(因此this就指向了这个新对象);③执行构造函数中的代码(为这个新对象添加属性);④返回新对象。

        //  百度这么说,那不是创建的新对象就是animal?因为this指向animal。但是animal是个函数他本来就是个对象啊!!搞不懂!!!


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

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

3回答
ForeverLovel 2020-04-17 16:28:21

我的理解是函数里面的this,不被实例化(也就是new)的话,指向的就是window,一旦被实例化之后,this就指向实例化出来对的对象,比如执行这句

var test = new animal("xm",12)之后,此时在函数里面的this就是指向test


好帮手慕粉 2020-04-15 14:02:22

同学你好,关于同学的问题回答如下:

1、构造函数不是这样用的:

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

普通函数才会这样使用,因为调用函数的是window,所以this就指向window。同学是将其当做了普通函数处理。

2、在通过animal实例化一个对象test时,this指向的就是test,不是animal。老师在第一次回答的时候,图上已经画了。

祝学习愉快~

好帮手慕粉 2020-04-15 10:26:07

同学你好,实例化过程使用如下:

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

构造函数内部的运行机制就是这样的呢。

祝学习愉快~

  • 提问者 功不唐捐终入海 #1
    为什么this指向的是animal而不是test?是因为这里animal相当于是一个形参代表才创建的新对象??
    2020-04-15 11:56:36
  • 老师怎么不回复了

    2021-07-05 20:29:42
  • 同学你好,是另外开启了一个回答框进行回复的

    http://img1.sycdn.imooc.com//climg/60e3d2840948334509710777.jpg

    弄清楚顺序哦。祝学习愉快!

    2021-07-06 11:48:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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