前言
首先大家都知道JavaScript语言并没有类这个概念,它是采用一种基于原型的继承机制。在JavaScript中,每一个函数对象都有一个原型属性(prototype),这个属性指向的对象就是这个函数对象的原型对象,这个原型对象也有原型属性,以此类推,就形成了一个原型链。在JavaScript访问对象的属性时,首先在这个对象中查找有没有同门的属性,若没有,则顺着原型链一直查找,直到找到这个属性。
1. 原型链的缺点
这里总结了一些前辈写的,大概有以下几点:
- 原型只能设为某一对象,而不能设为多个对象,所以不支持多继承。
- 原型中的属性为多个子对象共享,如果某个子对象修改了原型中的某一属性值,则其他的子对象都会受影响。
- 原型的设置只能发生在对象都构造完之后,这会造成在子对象的构造函数中无法修改父对象的属性,而在基于类的继承中,子类对象在自己的构造函数中可以调用父对象的构造函数。
而dojo对JavaScript基于原型的继承进行了包装,可以使用dojo/_base/declare模块来定义类。
2. 定义一个类
在Dojo 中通过dojo/_base/declare