JavaScript 的额外好处是可扩展性,您可以通过向类添加原型来扩展方法。假设您要为单个和多个设备创建一个名为"longPress"的方法,一种编写方法的方式如下:
Device.prototype.longPress=function(x,y){
varretval=this.click(x,y,tcConst.STATE_DOWN);
if(retval!=0){
returnretval;
}
delay(500);
returnthis.click(x,y,tcConst.STATE_UP);
}
DeviceArray.prototype.longPress=function(x,y){
for(leti=0;i<this.length;++i){
retval=this[i].longPress(x,y);
if(retval!=0){
returnretval;
}
}
return 0;
}
这个实现对于包含大量设备的 DeviceArray 效率不高,如果阵列中有 100 个设备,该方法可能需要长达 50 秒。
更好的方法是先向所有设备发送 STATE_DOWN,然后等待剩余的 500 毫秒。幸运的是,Device 和 DeviceArray(多个设备)引入了"sendAll"方法,它执行指定的方法并等待指定的时间。这样,执行时间几乎为 500 毫秒。由于 "sendAll" 在 Device 和 DeviceArray 中都可用,因此 Device 和 DeviceArray 的代码实现完全相同。
Device.prototype.longPress=function(x,y){
varretval=this.sendAll(Device.prototype.click,
[x,y,tcConst.STATE_DOWN],500);
if(retval!=0){
returnretval;
}
returnthis.sendAll(Device.prototype.click,[x,y,tcConst.STATE_UP]);
}
DeviceArray.prototype.longPress=Device.prototype.longPress;
"sendAll" 方法仅适用于成功返回 0 的方法。