请问老师, Person.intro , Person.show是添加到函数的本身吗,

请问老师, Person.intro , Person.show是添加到函数的本身吗,

用new调用四步走,

 1、函数体内会自动创建一个空白对象{};

        2、函数中的上下文(this)会指向这个对象;

        3、顺序执行函数体内的语句;

        4、函数自动返回上下文对象,即使函数没有return语句。

然后const p1 =  new person()的话,相当于创建2次intro 和show 

然后const p2 =  new person()的话 

  Person.intro = "this is a Person class"

        Person.show = function () {

            console.log('show')

            console.log(this);


        }


正在回答

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

1回答

同学你好,解答如下:

1、是的。Person是构造函数(特殊的函数),Person.intro、Person.show是在函数自身上添加intro、show。

2、const p1 =  new Person()这句代码,是实例化Person。但是实例化的过程中,并不会创建intro和show,因为二者是在构造函数身上的,与构造函数的实例无关。与this、prototype相关的内容,才与实例相关,才会被创建,比如:

https://img1.sycdn.imooc.com//climg/627dec37098ecf0606880483.jpg

3、const p2 =  new Person()是再实例化一次,过程与上面类似。只不过,run方法是处于原型上的,它会被实例共享,即使多次实例化,run方法只会创建一次:

https://img1.sycdn.imooc.com//climg/627decf209ff324109460526.jpg

https://img1.sycdn.imooc.com//climg/627decf709a83e3804790077.jpg


而通过this定义的属性,则会被创建多次:

https://img1.sycdn.imooc.com//climg/627ded4309688df906950568.jpg

https://img1.sycdn.imooc.com//climg/627ded46099aeb8703240118.jpg

祝学习愉快!

  • 慕田峪1427181 提问者 #1

    Person.intro、Person.show是在函数自身上添加intro、show。也就是说,他们没有this指向,所以用new调用四步走,他们是不会指向这个对象,

    2022-05-13 15:42:34
  • 好帮手慕久久 回复 提问者 慕田峪1427181 #2

    不能说“没有this指向”,而是说intro、show没参与new的四步走,或者理解成“与this没有产生什么关联、与new出来的对象的原型也没有关联”:

    https://img1.sycdn.imooc.com//climg/627e115a09105aee05840199.jpg

    https://img1.sycdn.imooc.com//climg/627e1173093ba58e05830118.jpg

    2022-05-13 16:08:02
  • 慕田峪1427181 提问者 回复 好帮手慕久久 #3

    明白了,就是没有new 四步,单纯的,intro、show ,添加到了Person函数本身了,

    2022-05-13 19:30:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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