Javascript是一个面相对象的编程语言,但是和传统的面向对象有很大的区别。举个栗子:
定义一个类来表示2D平面几何里面的一个点。这个类的实例化的对象有一个r()的方法,用来计算该点到原点的距离:
function Point(x,y){
this.x=x;
this.y=y;
}
var p=new Point(1,1);
Point.prototype.r=function(){
return Math.sqrt(this.x*this.x+this.y*this.y);
}
p.r();
- 首先定义一个构造函数来初始化一个新的Point**对象**(按照约定,一般构造函数都是以大写字母开头)。this指代初始化的实例,将参数存储为对象的属性。
- 用关键字new和构造函数来创建一个实例,通过给构造函数的prototype对象赋值来给Point对象定义方法。
- Point的实例对象p(以及所有的Point实例对象)继承了方法r(),最后可以利用p来调用Point的方法。