1.类属性和类方法
类属性用来记录该类的某个性质而与具体的实例无关,无论声明多少它的实例,该属性仅此一个。
类属性的访问方式是通过类本身来访问的,例: Number. MAX_VALUE;
Number为类名, MAX_VALUE为该类的一个类属性。类属性实质是一个全局变量。在JavaScript中定义类属性是通过构造函数本身声明属性,例:Circle.pi=3.14;
类方法同样与类本身有联系的方法,它是通过类来调用的。由于类方法不是通过某上实例调用的,因此类方法中不能使用 this关键字。
访问对象的属性是通过操作符“ .”,另一方法是用“ [ ]”将对象作为联合数组来使用。
例:object .proterty 或object [property ] 都是合法的,但object ."pro"+"perty" 和 object ["pro"+"perty" ] 只有后者才可以。
类属性用来记录该类的某个性质而与具体的实例无关,无论声明多少它的实例,该属性仅此一个。
类属性的访问方式是通过类本身来访问的,例: Number. MAX_VALUE;
Number为类名, MAX_VALUE为该类的一个类属性。类属性实质是一个全局变量。在JavaScript中定义类属性是通过构造函数本身声明属性,例:Circle.pi=3.14;
类方法同样与类本身有联系的方法,它是通过类来调用的。由于类方法不是通过某上实例调用的,因此类方法中不能使用 this关键字。
function
CircleClass(radius)
... {
this.r = radius; //r是定义在构造函数中的实例属性
}
// PI是类属性,应该说它是构造函数这一对象的属性
CircleClass.PI = 3.14159 ;
// 计算圆面积函数,由于使用this关键字,它只能通过实例调用
function Circle_area() ... {
return CircleClass.PI*this.r*this.r;
}
// 通过赋值给CircleClass的原型对象的area属性,实现该实例函数
CircleClass.prototype.area = Circle_area;
// 比较两个圆半径的长短,返回较大圆的函数
function Circle_max(a,b) ... {
if(a.r > b.r)
return a;
else
return b;
}
// 该函数显然不应该是通过某一实例调用的实例函数,应定义为类函数
CircleClass.max = Circle_max;
var c = new CircleClass( 1.0 );
c.r = 1 ;
document.write( " c.r= " + c.r + " <br/> " );
var a = c.area();
document.write( " a= " + a + " <br/> " );
var x = Math.exp(CircleClass.PI);
document.write( " x= " + x + " <br/> " );
var d = new CircleClass( 1.2 );
var bigger = CircleClass.max(c,d);
document.write( " bigger.r= " + bigger.r + " <br/> " );
... {
this.r = radius; //r是定义在构造函数中的实例属性
}
// PI是类属性,应该说它是构造函数这一对象的属性
CircleClass.PI = 3.14159 ;
// 计算圆面积函数,由于使用this关键字,它只能通过实例调用
function Circle_area() ... {
return CircleClass.PI*this.r*this.r;
}
// 通过赋值给CircleClass的原型对象的area属性,实现该实例函数
CircleClass.prototype.area = Circle_area;
// 比较两个圆半径的长短,返回较大圆的函数
function Circle_max(a,b) ... {
if(a.r > b.r)
return a;
else
return b;
}
// 该函数显然不应该是通过某一实例调用的实例函数,应定义为类函数
CircleClass.max = Circle_max;
var c = new CircleClass( 1.0 );
c.r = 1 ;
document.write( " c.r= " + c.r + " <br/> " );
var a = c.area();
document.write( " a= " + a + " <br/> " );
var x = Math.exp(CircleClass.PI);
document.write( " x= " + x + " <br/> " );
var d = new CircleClass( 1.2 );
var bigger = CircleClass.max(c,d);
document.write( " bigger.r= " + bigger.r + " <br/> " );
访问对象的属性是通过操作符“ .”,另一方法是用“ [ ]”将对象作为联合数组来使用。
例:object .proterty 或object [property ] 都是合法的,但object ."pro"+"perty" 和 object ["pro"+"perty" ] 只有后者才可以。