先定义一个含有name属性,并且由setName和getName方法的接口
function Animal(son){
//声明一个接口姓名属性
this.name;
//声明一个设置名字接口函数
this.setName;
//声明一个获取姓名接口函数
this.getName;
//进行判断子类是否实现接口方法
if(son!='undefined'){
var c=new son();
if( !c.hasOwnProperty('setName')||!c.hasOwnProperty('getName')){
if(!(typeof p.getName==='function')||!(typeof
p.setName==='function')){
throw new Error("子类"+son.name+",没有实现接口方法");
}
}
}
}
定一个类
function People(){
}
进行实现接口
var p=new People;
People.prototype=new Animal(People);
由于该实现类People没有重写接口的方法因此会导致运行时失败,
将抛出异常。
重新定义实现类
function People(){
this.setName;
this.getName;
}
var p=new People;
People.prototype=new Animal(People);
这样也会报错,因为定义的setName和getName不是函数
所以我们可以这样定义实现类
function People(){
this.setName=function(){}
this.getName=function(){}
}
var p=new People;
People.prototype=new Animal(People);
运行通过
这就是一个简单的定义接口以及接口运行时检查是否被实现的例子