1.每一个函数(类)都有一个 默认的 prototype属性,指向自己的原型对象
2.每一个实例(对象)都有一个__proto__属性,指向自己的所属类的原型对象
3.每一个默认的原型对象上都有一个 constructor属性 指向对应的构造函数本身
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.eat = function(){}
Person.prototype.play = function(){}
var p1 = new Person('小红',10)
var p2 = new Person('小明',11)
4.普通函数执行过程:开辟一个作用域,形参赋值,变量提升,代码从上到下执行
5.new执行过程:开辟一个作用域,形参赋值,变量提升,开辟一个堆内存,把this的指向改成这个堆内存,然后再代码从上到下执行。