javascript有几个非常重要的概念,很多人都忽略了,导致了很多后续的问题.
javascript有五个原始类型:Undefined,NULL,Boolean,Number,String.由于这些原始类型占据的空间是固定的,所以它们存储在较小的内存区域--栈中,如果一个值是引用类型的,那么它的存储空间将从堆中分配.
javascript中的对象全是引用类型
var o= new Object()
o是一个引用,也是一个对象
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("Matt");
alert(oCar1.drivers); //outputs "Mike,Sue,Matt"
alert(oCar2.drivers); //outputs "Mike,Sue"
上例就是一个混合的构造函数/原型方式,每个new出来的对象都拥有自己的属性,但每个对象都指向相同的函数showColor,showColor被每个对象共享(它使用了原型,而属性没使用原型,如果属性也使用原型,它们也将被所有对象共享,修改任何一个对象的属性都将影响到其它对象的属性被修改).
创建javascript对象有好几种方法,但这种方法是最优的,强烈建议使用这种方法