Javascript new 执行构造调用过程
1 function Cat(name) { 2 this.name = name 3 } 4 var Kitty = new Cat('kitty') 5 console.log(Kitty.__proto__ === Cat.prototype) // true 6 console.log(Kitty.constructor === Cat) // true 7 console.log(Kitty) // {name: 'kitty'}
1)构建一个全新对象 Kitty;
2)给新对象的内部属性赋值,关键是给
3)执行函数 Cat,执行过程中内部
4)如果 Cat内部显式返回对象类型数据,则,返回该数据,执行结束;不然返回新创建的对象 kitty。
2)给新对象的内部属性赋值,关键是给
[[Prototype]]
属性赋值,构造原型链(如果构造函数的原型是 Object 类型,则指向构造函数的原型;不然指向 Object 对象的原型);3)执行函数 Cat,执行过程中内部
this
指向新创建的对象 kitty;4)如果 Cat内部显式返回对象类型数据,则,返回该数据,执行结束;不然返回新创建的对象 kitty。