new就是一个构造函数
- 创建一个空对象{};
- 为新创建的对象添加属性proto,将该属性链接至构造函数的原型对象 ;
- 将步骤1新创建的对象作为this的上下文 ;
- 如果该函数没有返回对象,则返回this。
function MyNew (fn){
// 创建新的空对象
var obj = {};
// 将控对象的原型指向构造函数的原型
obj.__proto__ = fn.prototype;
// 将控对象的构造函数指向构造参数
obj.constructor = fn
// 执行构造函数
fn().call(this);
// 返回对象
return obj
}
网友评论