javascript 类 构造函数和原型

下面是一个类的例子。
javascript: function Rectangle(w,h){         this.width=w;         this.height=h;  }  
  Rectangle.prototype.area=function(){    return this.width*this.height;  }   
 var rect1=new Rectangle(3,4);  
rect1.area();   

在例子里面,类的属性参考C++的显示声明,必须用this.指明。
在往类里面添加方法的时候,使用的是原型protoype 。

上面的例子属于自定义的类。参考自定义的类方法添加,系统自带的方法也是可以扩展的。
String.prototype.endsWith=function(c){return (c==this.charAt(this.length-1))}
这种扩展容易带来很多问题,除非解决兼容性问题,一般不会使用

function Circle(radius){
     this.r=radius;
}

Circle.PI=3.14159;

Circle.prototype.area=function(){
    return Circle.PI*this.r*this.r;
}

Circle.max=function(a,b){
     if(a.r>b.r) return a;
     else return b;
}

var c=new Circle(1.0);
c.r=2.2;
var a=c.area();
var x=Math.exp(Circle.PI);
var d=new Circle(1.2);
var bigger=Circle.max(c,d);

上面的例子主要是讲解类属性和实例属性,实例方法,类方法。
私有成员要使用闭包的方式来实现。



建立对象,通常要为对象提供一些通用的方法。这些方法在其他类中业存在。
toString()方法   将对象转化为字符串。
valueOf()方法   将对象转化为数字
比较方法


超类与子类
在继承关系中,子类要继承父类,需要在构造函数中显示引用父类的构造函数,设置子类的原型为父类,删除子类不需要的属性和方法,显示的声明子类的构造函数


构造函数链是指继承过程中构造函数的显示父类构造函数的引用。


继承式函数扩展
PositionedRectangle.prototype.toString=function(){
       return "("+this.x+","+this.y+")"+this.superclass.prototype.toString.apply(this);
}
或者将this.superclass替换为Rectangle

非继承式函数扩展
借用其他类的方法,是因为函数也是变量。只提供借用方法的类称为混入类。


确定对象的类型
typeof 从对象中区分基本类型
instanceof   从对象中确定对象的类型

Object.toString()可以测试对象的类型


如果一个对象拥有了一个类的所有属性和方法,那么这个对象可以称为这个类的一个实例。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值