详细说明在代码注释中有第一种方式为向对象添加属性:
<script type="text/javascript">
//创建无类型的对象,数据方式为json,属于捆绑方式,一旦完成,不能随意修改
var car={
luntai:"米其林",
fangxpan:"volvo",
boli:"fuyao",
speed:function(){
//alert("speed well");
alert(this.luntai);
}
};
//alert(car.luntai);
car.speed();//输出米其林,this指向当前对象
//对于属性由对象直接调用,方法由对象.方法()调用
//alert(this.luntai);
/**上一句显示undefine原因是没有定义,也就是没有找到相应的this
this指的是当前对象,这里指的应该是window本身
*/
//alert(this);//显示object window,window对象
//通过该方式对同样类型的对象进行封装,可以提高效率
</script>
<script type="text/javascript">
function mycar(){}//属于一个空构造器
mycar.prototype.luntai="米其林";
mycar.prototype.name="volvo";
mycar.prototype.showspeed=function(){
alert(this.luntai);
}
//每一个对象都有一个prototype子对象
var car=new mycar();//第一类车
alert(car.price);
//car.showspeed();
//如果需要添加车的特殊属性,那么
mycar.prototype.price="1000";
var car2=new mycar();//第二类车
alert(car2.price);
//通过这样的方式可以先将相同属性封装在一起,
//在讲特殊属性单独列出,这样有利于提高代码的效率
</script>
<script type="text/javascript">
function mycar(name,luntai,speed){
this.name=name;
this.luntai=luntai;
this.speed=speed;
}//这是一个构造器
var car=new mycar();
//alert(car.name);
//这里可以显示出volvo也就是说可以将该属性作为参数被外界调用
//这样还可以避免全局变量的大量定义,当然也可以定义有参构造器
//同样对于那些不需要进行变更的属性可以进行一下操作
mycar.prototype.type="小车";
mycar.prototype.showmessage=function(){
alert(car.name+":"+car.speed);
}
var car=new mycar("byd","米其林","200km/h");
//car.showmessage();
//在这里prototype所添加的属性存在一个内存地址中,也就是说要获取
//type或者showmessage方法都是一样的
var car1=new mycar("bwm","米其林","250km/h");
alert(car.type==car1.type);//结果显示为true
//构造器中德熟悉为每一个对象私有属性,而prototype为构造器的公共属性</script>