Javascript object-oriented-interface
Interface: Some principles stipulated for realizing a certain task, function, purpose, etc.
Interface in the program: Specify how many methods there are and what are the method names. (Because the tasks to be completed in the program are all implemented through functions or methods.)
Interface in javascript: combine a certain "type object" that comes out of the instance, and the "interface object" that comes out of the instance, After making a comparison and complying with the rules, it can be said that: this object implements the specified interface;
(Interface class: through this class, different interfaces are instantiated. That is, different interface instances, that is, different Number of methods and method names)
(Comparison: the essence is to determine whether the object from the subtype instance has the method name saved in the interface object, and the number.)
Small Example:
Telephone category, under which there can be subcategories such as "phone", "mobile phone", "tablet phone", etc. And these subclasses all have a common task, function or purpose---[Dial the phone]
In order to realize this function, different subclasses can have different internal implementation methods, so that This phone can be connected. But now for the sake of users, a stipulation must be made:
No matter what subtype you are, the object you instantiate, that is, the object with the phone function, must have two things to implement [dialing the phone] A method,
That is: 1. Press the phone number (numeric key) 2. Press the dial key;
The following is the fixed design pattern:
var Interface = function(name,methods){ if(arguments.length != 2){ throw new Error("Interface constructor called with" + arguments.length + "arguments, but expected exactly 2."); } this.name = name; this.methods = []; for(var i = 0,len = methods.length; i <len; i++){ if(typeof methods[i] !== 'string'){ throw new Error("接口方法的名称必须是一个字符串"); } this.methods.push(methods[i]); } }; //Static class Method Interface.ensureImplements = function(myobject1,Iobject1){ if(arguments.length!=2){ throw new Error("方法 Interface.ensureImplemnents 指定了" + arguments.length+ "个参数,但是期望的是2个 ."); } for(var i=1,len = arguments.length; i<len; i++){ var _interface = arguments[i]; //接口对象,要通过接口类实例出来 if(_interface.constructor !== Interface){ throw new Error("接口,不是通过Interface类,实例出来的"); } //把接口对象里面的方法名取出来,结合到本例中的手机对象,来验证,该手机对象是否有这两个方法,且方法名是不是一样; for(var j=0, methodsLen = _interface.methods.length; j<methodsLen;j++ ){ var method = _interface.methods[j]; if(!myobject1[method]||typeof myobject1[method] !== 'function'){ throw new Error("通过验证函数:Interface.ensureImplements: "+myobject1.name+"对象的方法"+ method + " 找不到或者不是一个Function"); } } } };
The following is Example
//通过接口类,实例出一个"拔通电话"的接口;现在这个接口对象testInterface,规定了二个方法,且方法名字是"callfun"和"callnum" var testInterface = new Interface("call",["callfun","callnum"]); //移动电话类,的构造函数; var mobilepone = function(call){ this.name = call; } //移动电话类的公有方法 mobilepone.prototype = { "constructor":mobilepone, //必须和前面接口对象规定的方法名一样; "callfun" : function(){ document.write("按键"); }, //必须和前面接口对象规定的方法名一样 "callnum" : function(){ document.write("拔号"); } } //通过移动电话类,实例一个三星的手机对象 var anycall = new mobilepone("anycall"); //检测这个个三星的手机对象,是否实现了[拔通电话]这个接口;即把三星手机对象和接口对象做为参数传入验证函数,进行比较 Interface.ensureImplements(anycall,testInterface); anycall.callnum();
For more Javascript object-oriented interface-related articles, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

Discussion on the realization of parallax scrolling and element animation effects in this article will explore how to achieve similar to Shiseido official website (https://www.shiseido.co.jp/sb/wonderland/)...

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...

Learning JavaScript is not difficult, but it is challenging. 1) Understand basic concepts such as variables, data types, functions, etc. 2) Master asynchronous programming and implement it through event loops. 3) Use DOM operations and Promise to handle asynchronous requests. 4) Avoid common mistakes and use debugging techniques. 5) Optimize performance and follow best practices.

Explore the implementation of panel drag and drop adjustment function similar to VSCode in the front-end. In front-end development, how to implement VSCode similar to VSCode...
