js模拟接口源码

<!doctype html>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  </head>
  <body>
  <script>
var reg={
     string:/^[\D]+/
    }
    interfaces.interfacee=[];
    interfaces.is=true;
function interfaces(name,method){
      function  interface(name,method){
     if(!reg.string.test(name)|| typeof name!=="string"||arguments.length<2||method.constructor!==Array)
     {
        throw "接口所有对象属性值不能是undefined,name===string,method===Array"
        }
    for(var i=0,len=method.length;i<len;i++)
    {
        if(!reg.string.test(method[i]||typeof method[i]!=="string")){throw "接口对象方法名必须是string类型;"}
        }
      this.name=name;
    this.methdos=method;

      interfaces.interfacee.push(arguments.callee)
      }
               return new interface(name,method);
    }

    var inter=interfaces("w",["tr","b"]);
    var inter2=interfaces("w",["tr","b"]);

   function test(){this.tr=function(){};this.b=function(){}};var test1=new test();
     function test3(){this.tr=function(){};this.b=function(){}};var test2=new test3();

 interfaces.intercheck=function(object){
     if(arguments.length<2||typeof object !=="object"){throw "必须指定接口对象属性参数"}
     for(var i=1,j=0;i<arguments.length;i++,j++)
     {
         var interobj=arguments[i];
          if(interobj.constructor!== interfaces.interfacee[j]){throw "指定的接口对象参数属性并不是一个接口对象"}
          for(var k=0;k<interobj.methdos.length;k++){
                var inmethod=interobj.methdos[k];
                if(!object.length){
                if( !object[inmethod]||typeof object[ inmethod]!="function"  )
              {
                 throw "实现的接口抽象方法的对象的方法类型必须是function,此对象并没有实现接口抽象方法"}
                }
          }
         for(var u=0;u<object.length;u++){
              if( !object[u][inmethod]||typeof object[u][ inmethod]!=="function" )
               {
                   throw "实现的接口抽象方法的对象的方法类型必须是function,此对象并没有实现接口抽象方法"
                 }

               }
        }
          }

      interfaces.intercheck(test2,inter,inter2);
  </script>
  </body>
  </html>

前端交流群 162791594;
时间: 2024-08-11 03:15:14

js模拟接口源码的相关文章

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

Deque接口源码解析

Deque 双向队列 队头:可以插入可以删除 队尾:可以插入可以删除 继承Queue接口 源码如下: package java.util; public interface Deque<E> extends Queue<E> { /** * 队头插入元素 * * @throws 队列满了添加元素,抛出:IllegalStateException * @throws 类型不兼容,抛出:ClassCastException * @throws null队列不允许null,抛出:Null

VB通过http调用验证码短信接口源码

通过验证码短信http调用接口,您可以很快速的在网站或者app中集成手机号验证功能,该源码只是核心代码,具体可以根据您的实际需求进行扩展. 该DEMO是VB通过http调用验证码短信接口源码: VERSION 5.00 Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "Mswinsck.OCX" Begin VB.Form Form1 Caption = "Form1" Clien

WebBrowser之获取跳转页面的Document接口源码

问题由来是这样的,今天帮一个网友解决问题,说从VC驿站下载了一个源码,程序的功能主要是在对话框上面放置了一个WebBrowser控件,程序启动的时候默认调用这句代码: m_web.Navigate(_T("https://www.baidu.com/s?wd=400电话"), NULL, NULL, NULL, NULL); 打开这个网址:https://www.baidu.com/s?wd=400电话,如下图: 点击[获取测试]按钮之后,执行如下函数: 1 void CCctryDl

新浪图床上传接口源码分享

部署源码之后自行修改账号密码为自己的新浪账号 <?php /** * 上传图片到微博图床 * @author Youngxj & mengkun & 阿珏 * @param $file 图片文件/图片url * @param $multipart 是否采用multipart方式上传 * @return 返回的json数据 * @code 200:正常;201:错误;203:cookie获取失败;404:请勿直接访问 * @ps 图片尺寸可供选择:square.thumb150.orj

SortedSet接口源码解析

SortedSet接口为TreeSet做准备 可以实现排序集合 源码 package java.util; public interface SortedSet<E> extends Set<E> { /** * 比较器 */ Comparator<? super E> comparator(); /** * 获取子集 * @throws ClassCastException if <tt>fromElement</tt> and * <t

基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址

转载请说明原出处,谢谢~~ 前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布.其实这个控件封装起来没什么难度,我只是按照原来作者的demo,把相应的消息封装成duilib对应的. 在此首先要感谢wke内核的作者BlzFans以及soui2界面库的作者flyhigh,BlzFans精简了webkit内核后封装为wke并公布了源码,flyhigh对wke进行处理让他更容易移植到dui工程中.wke内核10M大

KRPano JS 场景编辑器源码

KRPano JS编辑器,可以运行在Node环境中. 源码地址:https://github.com/xxweimei/krpano-editor-js 或者下载zip包:http://pan.baidu.com/s/1c2Il5Pu 使用说明: clone项目到本地: git clone https://github.com/xxweimei/krpano-editor-js 安装nodejs: https://nodejs.org/dist/v6.11.1/node-v6.11.1-win-

php通过http调用验证码短信接口源码

通过验证码短信http调用接口,您可以很快速的在网站或者app中集成手机号验证功能,该源码只是核心代码,具体可以根据您的实际需求进行扩展. <?php function Post($curlPost,$url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFE