/**
* 概念:適配器模式
* 將一個(gè)類(對(duì)象)的接口(方法或者屬性)轉(zhuǎn)化成另外一個(gè)接口,以滿足用戶需求,使類(對(duì)象)之間接口
* 的不兼容問題通過適配器得以解決
*/
// 1、juqery 適配器
// window.A = A = jquery
// 2、適配異類框架
// 假如有這么一個(gè)A類框架
// 定義框架
var A = A || {};
// 通過ID 獲取元素
A.g = function(id) {
return document.getElementById(id)
}
// 為元素綁定事件
A.on = function(id, type, fn) {
// 如果傳遞參數(shù)是字符串則以id處理,否則以元素對(duì)象處理
var dom = typeof id === 'string'? this.g(id) : id;
// 標(biāo)準(zhǔn) DOM2 級(jí)添加事件方式
if (dom.addEventListener) {
dom.addEventListener(type, fn, false);
// IE DOM2 級(jí)添加事件方式
} else if(dom.attachEvent) {
dom.attachEvent('on' + type, fn);
// 簡易添加事件方式
} else {
dom['on' + type] = fn
}
}
// 用例
A.on(window, 'load', function() {
// 按鈕點(diǎn)擊事件
A.on('mybutton', 'click', function() {
console.log('點(diǎn)擊成功')
})
})
// 加入之前我們用的A框架寫的代碼,現(xiàn)在想轉(zhuǎn)換為jquery,那么我們需要寫一個(gè)適配器,適配以前的代碼
// 下面是適配器
A.g = function(id) {
// 通過jquery 獲取jquery 對(duì)象,然后返回第一個(gè)成員
return $(id).get(0)
}
A.on = function(id, type, fn) {
// 如果傳遞參數(shù)是字符串則以id 處理,否則以元素對(duì)象處理
var dom = typeof id === 'string' ? $('#' + id) : $(id);
dom.on(type, fn);
}
// end
/**
* 參數(shù)適配器
* 比如我們封裝一個(gè)方法需要傳很多參數(shù),然而我們一個(gè)一個(gè)傳,是很難記住每一個(gè)參數(shù)的
* 因此我們的做法是傳遞一個(gè)對(duì)象過去,使用此種方法,就要用適配器來適配傳入的這個(gè)參數(shù)對(duì)象,給默認(rèn)值
*
*/
function doSomeThing(obj) {
var _adapter = {
name: '王亞浩',
title: '設(shè)計(jì)模式',
age: 24,
color: 'pink',
size: 100,
prize: 50
};
for (let i in _adapter) {
_adapter[i] = obj[i] || _adapter[i];
}
// 或者extend(_adapter, obj) 注此時(shí)可能會(huì)多添加屬性
}
// 數(shù)據(jù)適配
// 元數(shù)據(jù)
var arr = ['javascript', 'book', '前端編程語言', '8月1日']
// 目標(biāo)數(shù)據(jù)結(jié)構(gòu)
var obj = {
name:'',
type:'',
title:'',
time:''
}
function arrToObjAdapter (arr) {
return {
name: arr[0],
type: arr[1],
title: arr[2],
data: arr[03],
}
}
// 用例
var adapterData = arrToObjAdapter(arr)
console.log(adapterData)
javascript適配器模式----2022-11-20
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- UML 代碼實(shí)現(xiàn) 需要被適配的類【電源】 適配類【充電器】 定義適配功能的接口【變壓器功能】 需要用到適配功能的類...
- 1. 適配器模式的定義 適配器模式的作用是解決兩個(gè)軟件實(shí)體間的接口不兼容的問題。使用適配器模式之后,原本 由于接口...
- 14 適配器模式 適配器模式的作用是解決兩個(gè)軟件實(shí)體間的接口不兼容的問題; 14.1 適配器模式實(shí)例 在之前的地圖...
- 引 適配器模式的作用是解決兩個(gè)軟件實(shí)體間的接口不兼容的問題。使用適配器模式之后,原本由于接口不兼容而不能工作的兩個(gè)...
- 適配器模式:將一個(gè)類(對(duì)象)的接口(方法或者屬性)轉(zhuǎn)化成另外一個(gè)接口,以滿足用戶需求,使類(對(duì)象)之間接口的不兼容...