您的位置:首页 > Web前端 > JavaScript

关于javascript面向对象的编程和构造器的简单创建

2013-11-18 14:59 267 查看
详细说明在代码注释中有第一种方式为向对象添加属性:

<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: