this.val = 날짜;
}
}
D.date.prototype = {
toStr : function(tpl){
var date = this.val,tpl = tpl || "yyyy-MM-dd hh:mm:ss";
var v = [date.getFullYear(),date.getMilliseconds(),date.getMonth( ) 1,date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds()]
var k = "MM,M,dd,d,hh,h,mm,m ,ss,s" .split(",");
var kv = {"yyyy":v[0],"yy":v[0].toString().substring(2),"mmss" :("000" v[1]).slice(-4),"ms":v[1]}
for(var i=2;i
kv [k[(i -2)*2]] = ("0" v[i]).slice(-2)
kv[k[(i-2)*2 1]] = v[i ];
}
for(var k in kv){
tpl = tpl.replace(new RegExp( k,"g"),kv[k])
}
return tpl;
},
unBox : function(){
return this.val;
}
}//alert(D.date("2017-123-12 ").toStr( "yyyy-MM-dd hh:mm:ss ms-mmss"));
// Alert(D.date("2017").unBox());
})( );
마지막으로 D가 다른 프레임워크 라이브러리와 분리되지 않고 DOM 작업을 수행할 수 있도록 다음과 같이 Dom 래퍼를 구현했습니다. >
코드 복사
코드는 다음과 같습니다.
(function(){
2 //包装Dom
3 D.dom = function(node){
4 if(!(D.dom의 이 인스턴스))return new D .dom(노드);
5 if(typeof 노드 === "정의되지 않음"){
6 node = document.body
7 }else if(typeof 노드 == "string"){
8 node = document.getElementById(node);
9 !node && (node = document.body)
}else{
!node.getElementById && (node = document.body); 🎜>}
this.val = node;
};
D.dom.prototype = {
inner : function(value){
this.val.innerHTML ? || "",this.val.innerHTML = 값) : (값 = 값 || 0,this.val.value = 값)
return this
},
attr : function(k ,v){
if(typeof k == "객체"){
for(var m in k){
this.val[m] = k[m]}
}else{
this.val[k] = v;
}
return this
},
css : function(k,v){
var style = this; .val.style;
if(typeof k == "object"){
for(var m in k){
style[m] = k[m]
}else{
style[k] = v;
}
return this;
},
addClass : function(cls){
var clsName = " " this.val. 클래스명 " ";
(clsName.indexOf(" " cls " ")==-1) && (clsName = (clsName cls).replace(/^s /,""));
this.val.className = clsName;
이것을 돌려주세요;
},
removeClass : function(cls){
var clsName = " " this.val.className " ";
this.val.className = clsName.replace(new RegExp(" " cls " ","g"),"").replace(/(^s )|(s $)/,"");
이것을 돌려주세요;
},
addEvent : function(evType,fn){
var that = this, typeEvent = this.val["on" evType];
if(!typeEvent){
(this.val["on" evType] = function(){
var fnQueue = 인수.callee.funcs;
for(var i=0;i< ;fnQueue.length;i ){
fnQueue[i].call(that.val)
}
}).funcs =[fn];
}else{
typeEvent.funcs.push(fn);
}
이것을 반환하세요.
},
delEvent : function(evType,fn){
if(fn===undefine){
this.val["on" evType] = null;
}else{
var fnQueue = this.val["on" evType].funcs;
for(var i=fnQueue.length-1;i>-1;i--){
if(fnQueue[i] === fn){
fnQueue.splice(i,1) ;
휴식;
}
}
fnQueue.length==0 && (this.val["on" evType] = null);
}
이것을 반환하세요.
},
unBox : function(){
return this.val;
}
};
//静态방법
var __ = D.dom;
__.$ = function(id){
반환 유형 id == "string" ? document.getElementById(id) : id;
};
__.$$ = function(tag,box){
return (box===undefine?document:box).getElementsByTagName(tag);
};
__.$cls = function(cls,tag,node){
node = node === 정의되지 않음 ? 문서: 노드;
cls = cls.replace(/(.)|(^s )|(s $)/g,"");
if(node.getElementsByClassName)return node.getElementsByClassName(cls);
태그 = 태그 === 정의되지 않음 ? "*" : 태그;
var filter = [], 노드 = (tag==="*" && node.all) ? node.all : node.getElementsByTagName(태그);
for(var i=0,j=nodes.length;inodes[i].nodeType==1 && ((" " 노드[i].className " "). indexOf(" " cls " ")!=-1) && filter.push(nodes[i]);
}
반환 필터;
};
//静态方法结束
alert(D.dom.$cls(".abc").length);
})();
Dom包装器的实例对象负责当前dom节点的自身操작품 🎜>
以上就是D类库的初级版本, 其中的要要part——对内置对象的扩展目前只有较少象的物話,比如对Numberally 扩件中,到当多数字操작품,其中有一些是常可以将其添加入Number包装器,好处也是显而易见的。
最后如果你看到了这篇文章,有足够的想法,我希望你能尽你所能来给于包装더 많은 방법을 확장하면, 이 부분이 주요 의미로 사용됩니다.