# 原型模式
# 多态
多态的思想实际上是把“做什么”和“谁去做”分离开来,要实现这一点,归根结底先要消除类型之间的耦合关系
# new
创建一个新对象
将这个对象的
__proto__
指向正确的原型调用这个构造器函数,并将
this
指向新对象
var objectFactory = function() {
var obj = new Object();
var Constructor = [].shift.call(arguments);
obj.__proto__ = Constructor.prototype;
var ret = Constructor.apply(obj, arguments);
return typeof ret === 'object' ? ret : obj;
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
对象的__proto__
属性默认指向它的构造器的原型对象,__proto__
就是对象跟“对象构造器的原型”联系起来的纽带。
# Object.create
用来克隆对象,实际上是创建一个新的对象,它的 __proto__
指向指定的克隆对象。需要通过一个中间函数来实现。
var create = function(obj) {
var F = function();
F.prototype = obj;
return new F();
}
1
2
3
4
5
6
2
3
4
5
6
创建一个没有原型的对象:Object.create(null)