请问老师, 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、是的。Person是构造函数(特殊的函数),Person.intro、Person.show是在函数自身上添加intro、show。
2、const p1 = new Person()这句代码,是实例化Person。但是实例化的过程中,并不会创建intro和show,因为二者是在构造函数身上的,与构造函数的实例无关。与this、prototype相关的内容,才与实例相关,才会被创建,比如:
3、const p2 = new Person()是再实例化一次,过程与上面类似。只不过,run方法是处于原型上的,它会被实例共享,即使多次实例化,run方法只会创建一次:
而通过this定义的属性,则会被创建多次:
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧