JavaScriptインターフェイスを模倣するには3つの方法があります。1。コメント方法2。属性方法を確認します。
1。コメント方法:この方法はプログラムドキュメントのカテゴリに属し、インターフェイスの継承と実装はプログラマーに完全に意識的に依存しています。
/*interface peop {function createhead(); function createbody();}*/var woman = function(name){// interfacethis.name = name;} woman.prototype.showname = function(){alert(this.name);} woman.prototototototy.createbody = function(){/emorming body body ailert(作成 ");} woman.prototype.createhead = function(){alert("ヘッドが作成された ");}// 2。属性チェック方法:インターフェイスメソッドをクラス属性リストに実装する方法を追加し、定義された検出を通じてそれらのメソッドが実装されているかどうかを繰り返し確認します。
//長所と短所:プログラマーにインターフェイスの実装を強制することができます。気付いていない場合は、エラーを報告します。ただし、実装した方法は宣言していますが、実装中に省略される可能性があります
/*interface peop {function createhead(); function createbody();}*/var woman = function(name){this.name = name; this.implementsInterfaces = ['people'];} woman.prototype.showname = function(){alert(this.name);} woman.prototype.createbody = fention = fention alcion()作成された ");} woman.prototype.createhead = function(){alert(" headが作成された ");} function exomment(obj、interfaces){for(var i = 1; i <interfaces.length; i ++){var interfacename = interfaces [i]; var interfound = fals; j=0;j<obj.implementsInterfaces.length;j++){if(obj.implementsInterfaces[j] = interfaceName){interfaceFound = true;break;}}if(!interfaceFound){return false;}}return true;}function isImplememts(instance,interfaces){ //Judge whether the object has inherited the corresponding interface if(!実装(instance、interfaces)){throw new error( "オブジェクトは必須インターフェイスを実装しません");}}3.アヒルスタイルの識別方法:(アヒルは外観によって判断されるのではなく、アヒルの特徴を持っているかどうかによって判断されます。
上記の両方は、インターフェイスを実装したことを宣言していますが、声明は重要ではありません。インターフェイスの実装のコアは、クラスがインターフェイスメソッドセットを実装することです。クラスに、インターフェイスが定義されているのと同じメソッド関数名を持つ関数がある場合、インターフェイスを実装すると見なされます
//インターフェイスクラス、インターフェイスvar interface = function(name、motheds){if(agruments.length!= 2){throw new error( "+arguments.length.length+"引数で呼び出しますが、正確に2 ");} this.name = name; this.metods = []; Mothereds [i]!== 'string'){throw new error( 'interface constructorは、mothed namesが "+'が文字列として渡されることを期待しています ') "+arguments.length+"引数、しかし正確に1 "")} for(var i = 0; i <objs.length; i ++){var obj = objs [i]; for(var j = 0; j <this.motheds.length; j ++){var mothed = this j]; if(!obj [mothed]; 'function'){throw new error( 'function interface.ensureimplements:Interface'+this.name+'、obj.mothed'+mothed+'は見つかりませんでした') name; implementsInterfaces = ['People'];} woman.prototype.showname = function(){alert(this.name);} woman.prototype.createbody = function(){//必要な方法アラートを実装する( "女性の体が作成された");} woman.creatotype.createhead = function。 created ");} // subclass var man = function(name){this.name = name; this.implementsInterfaces = ['people'];} prototype.showname = function(){alert(this.name);} man.prototype.createbody = function(){//必要な方法を実装しています。作成された ");} man.prototype.createhead = function(){alert("男の頭が作成された ");} // poeple.ensureimplements(['woman'、 'man'])を実装するかどうかを守る);