对象在代码执行过程中的任何时候都可以被创建和增强,具有极大的动态性,并不是严格定义的实体。下面的模式适用于创建对象
- 工厂模式 就是一个简单的函数,这个函数可以创建对象,为它添加属性和方法,然后返回这个对象。这个模式在构造函数模式出现后就很少用了。(缺点:无法识别对象类型,所有的实例都指向一个原型。)
- 使用 构造函数模式 可以自定义引用类型,可以使用 new 关键字像创建内置类型实例一样创建自定义类型的实例。(缺点:主要是其成员无法重用,包括函数)考虑到函数本身是松散的、弱类型的,没有理由让函数不能在多个对象实例间共享。
- 原型模式 解决了成员共享的问题,只要是添加到构造函数
prototype
上的属性和方法就可以共享。(缺点:所有继承的值,修改一个就等于修改全部实例,无法实例私有;且不能初始化参数),而组合构造函数和原型模式通过构造函数定义实例属性,通过原型定义共享的属性和方法。(缺点:父类构造函数始终被调用2次)
JavaScript
的继承主要通过 原型链 来实现。原型链涉及 把构造函数的原型赋值为另一个类型的实例【本质】。