以var p=new ClassA()为例
具体步骤:
1. 创建空对象;
var p= {};
2. 设置新对象的__proto__属性指向构造函数的prototype对象;
p.__proto__ = ClassA.prototype; 这里用到了原型链 后面我会写文章做说明
3. 使用新对象调用函数,函数中的this被指向新实例对象(因此可以用new关键字来改变this的指向):
var ceshi=function(name){
this.name=name;
console.log(this)//ceshi {name:"奔驰"}
//ceshi {name:"法拉利"}
}
var car1=new ceshi('奔驰')
var car2=new ceshi('法拉利')
上述代码中 this分别指向car1 和 car2
ClassA.call(p); //{}.构造函数(); 让this变成p
4. 将初始化完毕的新对象地址,保存到等号左边的变量中。
3068

被折叠的 条评论
为什么被折叠?



