Ada tiga cara untuk meniru antarmuka JavaScript: 1. Metode komentar 2. Periksa Metode Atribut 3. Metode Identifikasi Bentuk Gaya Bebek
1. Metode Komentar: Metode ini termasuk dalam kategori dokumen program, dan warisan dan implementasi antarmuka sepenuhnya bergantung pada pemrogram.
/*Antarmuka orang {fungsi createhead (); function createbody ();}*/var woman = function (name) {// mengimplementasikan orang antarmuka. dibuat ");} woman.prototype.createHead = function () {alert (" Kepala telah dibuat ");}// 2. Metode Pemeriksaan Atribut: Tambahkan metode antarmuka yang akan diimplementasikan ke daftar atribut kelas, dan berulang kali memeriksa apakah metode tersebut telah diimplementasikan melalui deteksi yang ditentukan.
// pro dan kontra: Anda dapat memaksa pemrogram untuk mengimplementasikan antarmuka, dan jika Anda tidak menyadarinya, Anda akan melaporkan kesalahan. Namun, meskipun menyatakan metode apa yang telah Anda terapkan, kemungkinan ada kelalaian selama implementasi
/*antarmuka orang {fungsi createhead (); function createbody ();}*/var woman = function (name) {this.name = name; this.implementsinterfaces = ['people'];} woman.prototype.showname = function () {alert (ini dibuat ");} woman.prototype.createHead = function () {alert (" Kepala telah dibuat ");} function implement (obj, antarmuka) {untuk (var i = 1; i <antarmuka. j = 0; j <obj.Implementsinterfaces.length; j ++) {if (obj.Implementsinterfaces [j] = antarmuka) {interfaceFound = true; break;}} if (! Interfacefound) {return false;} return true;} function inciMemts (instance) {return false; if (! implement (instance, interfaces)) {throw new error ("objek tidak mengimplementasikan antarmuka yang diperlukan");}}3. Metode Identifikasi Gaya Bebek: ( Bebek tidak dinilai berdasarkan penampilan, tetapi apakah ia memiliki karakteristik bebek. Seperti yang dikatakan James Whitcomb Riley, orang yang berjalan seperti bebek dan pertengkaran adalah bebek)
Kedua hal di atas menyatakan bahwa mereka telah mengimplementasikan antarmuka, tetapi pernyataan itu tidak penting. Inti dari implementasi antarmuka adalah bahwa kelas mengimplementasikan set metode antarmuka. Jika kelas memiliki fungsi dengan nama fungsi metode yang sama seperti antarmuka yang ditentukan, itu dianggap mengimplementasikan antarmuka
// Kelas antarmuka, digunakan untuk membuat antarmuka antarmuka antarmuka = fungsi (name, motheds) {if (agruments.length! = 2) {lempar kesalahan baru ("Konstruktor antarmuka dipanggil dengan"+argumen.length+"argumen, tetapi diharapkan persis 2");} this.name = name; this.methods = []; untuk (var i = 0);} this.name = name; this.methods = []; for (var i = 0);} this.name = name; this.methods = []; for (var i = 0); ibu [i]! == 'string') {throw new error ('Interface constructor mengharapkan nama mothed menjadi'+'dilewati sebagai string');} this.methods.push (motheds [i]);} antarmuka.prototype.ensureImplements = function (function) {ifruments (fungsi) {ifruments (funche) {ifruments. "+argumen. 'function') {throw new error ('function interface.ensureuplements: mengimplementasikan antarmuka'+this.name+', obj.mothed'+mothed+'tidak ditemukan');}}}} // buat antarmuka var people = interface baru ('people', ['createhead', 'createbody']; // name; this.implementsinterfaces = ['people'];} woman.prototype.showname = function () {waspada (this.name);} woman.prototype.createbody = function () {// mengimplementasikan metode yang diperlukan ("Tubuh wanita telah dibuat");} woman.prototype.createhead function = "woman have {" woman have woman () {} woman. var man = function (name) {this.name = name; this.implementsinterfaces = ['people'];} man.prototype.showname = function () {waspada (this.name);} man.prototype.createbody = function () {// menerapkan metode yang diperlukan ("badan pria telah dibuat"); {{{) {// Metode yang diperlukan ("bodi pria telah dibuat"); head telah dibuat ");} // mempertahankan apakah akan menerapkan poeple.ensureImplements (['woman', 'man']);