new的过程:
1、创建新对象
2、新对象的proto指向构造函数的prototype
3、执行构造函数,this上下文指向新对象
4、构造函数返回了对象,放弃之前的对象,返回新的对象;反之,返回之前建立的对象。
function newObj(func) {
var obj = new Object()
obj.__proto__ = func.prototype
var o = func.call(obj)
if (typeof o === 'object') {
return o
} else {
return obj
}
}
文章评论