var Interface = function(interfaceName,interfaceMethods){ if(arguments.length!=2){ alert("Interface expected 2 arguments,one is for Interface Name, and the other is the Array for methods ") }
this.interfaceName = interfaceName; this.interfaceMethods = new Array(); for(var i = 0;i < interfaceMethods.length;i++){ if(typeof interfaceMethods[i] !== "string"){ alert("Interface constructor expects each method name to be passed in as a string"); break; } this.interfaceMethods.push(interfaceMethods[i]) } }
Interface.CheckImplements = function(object,interfaces){ if(arguments.length!=2){ alert("Interface expected 2 arguments,one is for Interface Name, and the other is the Array for methods ") }
for(var i=0;i,i<interfaces.length;i++){ //alert(interfaces[i]) if(interfaces[i].constructor !== Interface){ alert("the interface expects to be created from Interface") break; } var interface = interfaces[i]; for(var j=0;j<interface.interfaceMethods.length;j++){ method = interface.interfaceMethods[j]; if(!object[method]||(typeof object[method]!="function")){ alert("object for the method '"+method+ " ' is not found for Interface '"+ interface.interfaceName+ " '") break; } } } }
var PersonInterface = new Interface("PersonInterface",["display","walk","eat","shout"]) //定义一个接口
var Person = function(){
this.display = function(){
}
this.eat = function(){
}
this.shout = function(){
} } person = new Person(); Interface.CheckImplements(person,[PersonInterface]) //会弹出对话框object for the method 'walk ' is not found for Interface 'PersonInterface '