js中所有事物都是对象,例如:日期,字符串,数字,数组,布尔,函数等。
对象都有属性和方法(比如车就就是一个对象,车有颜色、价格、重量等属性)。
1.访问对象属性和方法
访问对象:objectName.propertyName 访问方法:objectName.mathodName()
2.对象作用域:关键字this的使用(重要)
this总是指向调用该方法的对象,
使用this可以在多个地方重用一个函数
例如:
var oCar=new Object;
oCar.color="red";
oCar.myColor=myColor;
var oCar1=new Object;
oCar1.color="yellow";
oCar1.myColor=myColor;
function myColor()
{
alert(this.color);
}
oCar.myColor();
oCar1.myColor();
/*其中this是指oCar这个对象*/
3、定义类和对象
工厂方式:
function createCar(){
var car = new Object;
car.color="blue";
car.name="bm";
car.door=4;
car.showColor=function(){
alert(this.color);
};
return car;
}
var car1 = createCar();/*创建了一个新的car1*/
var car2 = createCar();/*创建了一个新的car2*,并且car1和car2的属性完全一样/
car1.showColor();
car2.showColor();
4、传递函数值(传递参数)
function createCar(pColor,pName,pDoor)
{
var car=new Object;
car.color=pColor;
car.name=pName;
car.door=pDoor;
car.showColor=function(){
alert(this.color);
}
return car;
}
var car1=createCar("blue","bm",4);
var car2=createCar("yellow","db",45);
car1.showColor();
car2.showColor();
5、混合构造函数与原型方式
function Car(pColor,pName,pDoor)
{
this.color=pColor;
this.name=pName;
this.door=pDoor;
this.drivers=new Array("Make","John");
}
Car.prototype.showColor=function(){
alert(this.color);
};
var Car1=new Car("blue","bm",4);
var Car2=new Car("red","db",4);
Car1.drivers.push("Take");//给driver数组增加Take值
alert(Car1.drivers);
alert(Car2.drivers);
6、动态原型方法
function Car(pColor,pName,pDoor){
this.color=pColor;
this.name=pName;
this.door=pDoor;
this.drivers=new Array("Bill","Mike");
}
if(typeof Car._initialized=="undefined") {
Car.prototype.showColor=function(){
alert(this.color);
};
Car._initialized=true;
}
var Car1=new Car("blue","bm",4);
var Car2=new Car("red","db",3);
alert(Car1.drivers);
alert(Car2.drivers);