每一个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;
};