每一个javaScript对象都有一个内部属性[[Prototype]],没法直接操作这个属性,属性对应的值成为这个对象的原型。
- 每个函数有一个prototyope指向原型对象。
- 原型对象constructor指回构造函数。
- 每个对象内部属性
[[porptotype]]或者proto指向它的原型对象。 - 用new创建一个对象时会把构造函数的原型对象给到生成对象的
[[prototype]]
实现一个new
function objectFactory() {//创建空对象var obj = new Object(),Constructor = [].shift.call(arguments);//设置对象原型obj.__proto__ = Constructor.prototype;//执行函数var ret = Constructor.apply(obj, arguments);//判断返回类型并返回return typeof ret === 'object' ? ret : obj;};
