你說的這種需求,策略模式是一種很好的應對,但是對于業務的擴展來說,有些時候還是不足的。
首先,一樓的說法必須得以來jQuery,在不依賴jQuery的前提下
我給出我的做法吧。
HTMLDOcument.prototype.getElementsByAttribute=function(attr){
????var?result=[];
????
????var?eles=document.getElementsByTagName("*");
????
????for(var?i=0;i<eles.length;i++){
????????if(eles[i].hassAttribute(attr)){
????????????results.push(eles[i]);
????????}
????}
????
????return?results;
};
function?strategyMethodBind=function(srcElem,eventTypes){
????for(var?item?in?eventTypes){
????????srcElem.addEventListener(eventTypes[item].type,
????????eventTypes[item].handler,false);
????}
}
window.onload=function(){
????[...document.getElementsByAttribute('strategy')].forEach(x=>{
????
????????strategyMethodBind(x,{
????????????type:"click",
????????????handler:function(){
????????????
????????????}
????????});
???
????})
}