Javascript中new对象的过程:
// 创建构造函数
function People(name){
this.name = name;
}
// 使用new创建实例对象person
var zxx = new People("ZXX");
zxx = {
name: 'zxx'
}
代码执行过程
var obj = {} 或者 var obj = new Object(); // 创建一个空对象;
obj.__proto__ = People.prototype; // 将该隐式原型原型指向构造函数显式原型
People.call(obj, "ZXX"); // 将构造函数中this指向创建的obj对象,并传入参数"ZXX"
return obj // 返回obj对象,person指向创建的obj对象(对象类型赋值为按引用传递,obj与person指向同一个对象)
1.创建一个空的Object对象.var obj = new Object();
2.将构造函数Person中this指向刚创建的obj对象
obj->Person.prototype->Object.prototype->null
3.将创建的obj的__proto__指向构造函数Person的prototype。这一步是建立对象和原型直接的对应关系。通过对象的__proto__属性能够访问到原型,IE下则没有暴露出相应的属性。
4.执行构造函数Person()中的代码