在javascript中使用预定义对象的能力只是面向对象语言的能力的一部分,它真正的强大之处在于能够创建自己专用的类和对象.当然,javascript创建类和对象的方法有很多,但是,我这里只想说说现在最常用的定义方法之一:就是混合的构造函数与原型方式的结合来定义.
联合使用构造函数和原型方式,就可像用其他程序设计语言一样创建对象.这种概念非常简单,即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(即方法).所有函数都只创建一次,而每个对象都具有自己的对象属性实例.(这样就解决了工厂方式定义类和对象需要创建多个对象实例的问题,从而提高了性能问题.)
- function Car (sColor, iDoors, iMpg) {
- this.color = sColor;
- this.doors = iDoors;
- this.mpg = iMpg;
- this.drivers = new Array("Mike", "Sue");
- }
- //添加方法
- Car.prototype.showColor = function() {
- alert(this.color);
- }
- var oCar1 = new Car("red", 4, 23);
- var oCar2 = new Car("blue", 3, 25);
- oCar1.drivers.push("Mat");
- alert(oCar1.drivers); //输出 "Mike, Sue, Mat"
- alert(oCar2.drivers); //输出 "Mike, Sue"
现在就更像创建一般对象了.所有的非函数属性都在构造函数中创建,意味着又可用构造函数的参数赋予属性默认值了.因为只创建showColor()函数的一个实例,所以没有内存的浪费.
这种方式是ECMAScript(javascript核心)采用的主要方式,它具有其他方式的特性,却没有它们的副作用.所以,再开发中最常使用的.