javascript设计模式【1】,接口Interface,鸭式辨型
2013-11-11 19:53
423 查看
// 接口构造函数,name为接口名,methods为字符串数组表明接口需要实现的方法 var Interface = function (name, methods) { if (arguments.length != 2) { throw Error("接口构造函数需要2个参数"); } // end if this.name = name; this.methods = []; for (var i = 0, len = methods.length; i < len; ++i) { if (typeof methods[i] !== "string") { throw new TypeError("函数名应该使用字符串"); } // end if this.methods.push(methods[i]); } // end for } // end Interface() // 类静态方法,用于检查接口,如果对象不满足接口需要,抛出异常 Interface.ensureImplements = function (object/*[,Interface]* */) { if (arguments.length < 2) { throw new Error("方法需要最少两个实参,第一个为需要检查的对象,后续为多个需要检查的接口"); } // end if for (var i = 1, len = arguments.length; i < len; ++i) { var item = arguments[i]; // 接口 if (item.constructor !== Interface) { throw TypeError("需要检查的类型必须为接口"); } // end if for (var j = 0, methodsLen = item.methods.length; j < methodsLen; ++j) { var method = item.method[j]; if (!object[method] || typeof object[method] !== "function") { throw Error("对象没有实现:" + item.name + " 的 " + method + " 方法"); } // end if } // end inner for } // end for } // end ensureImplements()
接口使用。检查对象能做什么。而不关心它是什么。
相关文章推荐
- ExtJs中decode与encode
- JS倒计时 代码
- js 知识总结
- JS 父子页面刷新
- js版本的tab切换
- js跨域问题新方案
- 7种js容易忽略的写法
- Javascript_9_DOM_节点练习
- js滚动加载插件
- Javascript弹出窗口的各种方法总结
- 一个免费的自动化跨平台测试JavaScript的工具——BrowserSwarm
- jsp异步验证文件
- 【技术】javascript编程规范
- js全屏显示显示代码的三种方法
- jsp中的include指令的用法,include文件路径问题,txt文件的编码问题
- js 判断文字是否破行
- safari 和Firefox js中不一致的敌方
- javascript中return的作用
- Lottery.js
- js获取指定cookie的值