1.创建一个空对象
2.把构造函数的 prototype 属性,最为空对象的原型
3.this 赋值为这个空对象
4.执行函数
5.如果函数没有返回值,返回 this

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Constructor(fn,args) {
var _this=Object.create(fn.prototype);
var res=fn.apply(_this,args);
return res?res:_this;
}

function Person(name,age) {
this.name=name;
this.age=age;
}
Person.prototype.say=function() {
console.log("我叫"+this.name);
}
var person=Constructor(Person,["张三",12]);
console.log(person);