12、适配器模式
适配器模式:将一个类(对象)的接口(方法或者属性)转化成另外一个接口,以满足用户需求,使类(对象)之间接口的不兼容问题通过适配器得以解决。
1 var A = A || {}; 2 A.g = function(id){ 3 return document.getElementById(id); 4 } 5 6 //添加绑定事件 7 A.on = function(id, type, fn){ 8 var dom = typeof id === 'string' ? this.g(id) : id; 9 if(dom.addEventListener){ 10 dom.addEventListener(type, fn, false); 11 //对于不支持addEventListener方法,但支持attachEvent方法的浏览器 12 }else if(dom.attachEvent){ 13 dom.attachEvent('on'+ type, fn); 14 //对于上边都不值,但支持onclick 15 }else{ 16 dom['on' + type] = fn 17 } 18 }
我们可以这样做
1 A.on(window, 'load', function(){ 2 A.on('mybutton', 'click', function(){ 3 //do something 4 }) 5 })
适配下
1 A.g = function(id){ 2 return $(id).get(0); 3 } 4 5 A.on = function(id, type, fn){ 6 var dom = typeof id === 'string' ? $('#' + id) : $(id); 7 dom.on(type, fn); 8 }
11.2数据适配
var arr = ['javascript', 'html', 'c#'];
我们想给转化成为对象的形式
var arr = {};
1 function arrToObj(arr){ 2 return { 3 name : arr[0], 4 type : arr[1], 5 title : arr[2] 6 } 7 } 8 9 10 var adapterData = arrToObj(arr); 11 console.log(adapterData); //{name : "javascript", ....}