【文件属性】:
文件名称:类和原型-cdegs软件资料
文件大小:13.18MB
文件格式:PDF
更新时间:2021-07-11 11:37:43
javascript
9.1 类和原型
在JavaScript中,类的所有实例对象都从同一个原型对象上继承属
性。因此,原型对象是类的核心。在例6-1中定义了inherit()函数,这个
函数返回一个新创建的对象,后者继承自某个原型对象。如果定义一个
原型对象,然后通过inherit()函数创建一个继承自它的对象,这样就定
义了一个JavaScript类。通常,类的实例还需要进一步的初始化,通常是
通过定义一个函数来创建并初始化这个新对象,参照例9-1。例9-1给一
个表示“值的范围”的类定义了原型对象,还定义了一个“工厂”函数[3]用
以创建并初始化类的实例。
例9-1:一个简单的JavaScript类
//range.js:实现一个能表示值的范围的类
//这个工厂方法返回一个新的"范围对象"
function range(from,to){//使用inherit()函数来创建对象,这个对象继承自在
下面定义的原型对象
//原型对象作为函数的一个属性存储,并定义所有"范围对象"所共享的方法(行为)
var r=inherit(range.methods);//存储新的"范围对象"的起始位置和结束位置
(状态)
//这两个属性是不可继承的,每个对象都拥有唯一的属性
r.from=from;
r.to=to;//返回这个新创建的对象
return r;
}
//原型对象定义方法,这些方法为每个范围对象所继承
range.methods={//如果x在范围内,则返回true;否则返回false
//这个方法可以比较数字范围,也可以比较字符串和日期范围
includes:function(x){
return this.from<=x&&x<=this.to;},//对于范围内的每个整数都调用一次f
//这个方法只可用做数字范围
foreach:function(f){
for(var x=Math.ceil(this.from);x<=this.to;x++)f(x);