javascript使用new操作符时发生了什么
//javascript使用new操作符时发生了什么
var objectFactory=function(){
//创建空对象
var obj = new Object(),
Constructor = [].shift.call(arguments);
//新对象__proto__指向函数的原型对象
obj.__proto__=Constructor.prototype;
//将新对象作为this传入构造函数,如果构造函数返回对象则返回这个对象,否则返回新创建的对象
var ret = Constructor.apply(obj,arguments);
return typeof ret ==='object'? ret : obj;
}
function Person(name){
this.name = name;
}
Person.prototype.getName = function(){
return this.name;
}
var person = objectFactory(Person,'hoho');
console.log(person.name); //hoho
console.log(person.getName());//hoho