JAvascript設計モード-アダプタモード(8)
5262 ワード
アダプタモードは、既存のインタフェースと互換性のないクラスの間で適切に設定できます.このモードを使用するオブジェクトは、新しいインタフェースで別のオブジェクトをパッケージしているため、パッケージ(wrapper)とも呼ばれます.アダプタを使用すると、APIと一致せず、一緒に使用できないクラスを処理できます.アダプタは、あるインタフェースを別のインタフェースに変換するため、いくつかの機能をフィルタリングしたり、インタフェースを簡略化したりしません.
// :
var obj = { // ( )
str1:'111' ,
str2:'222' ,
str3:'333'
};
//
function adapter(obj){
interfaceMethod(obj.str1,obj.st2,obj.st3);
}
// usb
function interfaceMethod(x, y , z){
//
};
// :javascript (extjs , jquery , yui , prototype ... ded ...)
// YAHOO
// Prototype
// YAHOO ( , Prototype )
// : id dom
//Prototype $ function ( : id id )
function $(){
var elements = [] ;
for(var i = 0 ; i < arguments.length; i++){
var element = arguments[i];
if(typeof element == 'string')
element = document.getElementById(element);
if(arguments.length ==1)
return element ;
elements.push(element);
}
return elements;
}
// YUI get function ( : )
var YAHOO = {};
YAHOO.get = function(el){
if(typeof el == 'string'){
return document.getElementById(el);
}
if(el instanceof Array){
var elements = [] ;
for(var i = 0 ; i < el.length ; i++){
elements[elements.length] = YAHOO.get(el[i]);
}
return elements;
}
if(el){
return el ;
}
return null;
};
YAHOO.get = YUIToPrototypeAdapter ;
function YUIToPrototypeAdapter(){
// YUI
if(arguments.length == 1){
var e = arguments[0];
return $.apply(window,e instanceof Array?e:[e]);
} else {
return $.apply(window ,arguments);
}
}
window.onload = function(){
/*
// prototype
var domarr = $('inp1','inp2');
alert(domarr);
*/
/*
// YUI
var domarr = YAHOO.get(['inp1','inp2']);
alert(domarr);
*/
// YUI prototype
var domarr = YAHOO.get(['inp1']);
alert(domarr);
};