JS面向对象之多选框实现面向对象之多选框实现
主要为大家详细介绍了JS面向对象之多选框实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴
趣的小伙伴们可以参考一下
本文实例为大家分享了JS面向对象之多选框实现代码,供大家参考,具体内容如下
描述:描述:
JS面向对象——多选框的实现
效果:效果:
实现:实现:
Utile.js
(function () {
Object.prototype.addProto=function (sourceObj) {
var names=Object.getOwnPropertyNames(sourceObj);
for(var i=0;i<names.length;i++){
var desc=Object.getOwnPropertyDescriptor(sourceObj,names[i]);
if(typeof desc.value==="object" && desc.value!==null){
var obj=new desc.value.constructor();
obj.addProto(desc.value);//把obj当成引用对象带入递归函数继续给obj赋值
Object.defineProperty(this,names[i],{
enumerable:desc.enumerable,
writable:desc.writable,
configurable:desc.configurable,
value:obj
});
continue;
}
Object.defineProperty(this,names[i],desc);
}
return this;
};
Function.prototype.extendClass=function (supClass) {
function F() {}
F.prototype=supClass.prototype;
this.prototype=new F();
this.prototype.constructor=this;
this.supClass=supClass.prototype;
if(supClass.prototype.constructor===Object.prototype.constructor){
supClass.prototype.constructor=supClass;
}
}
})();
var RES=(function () {
var list={};
return {
DATA_FINISH_EVENT:"data_finish_event",
init:function (imgDataList,basePath,type) {
if(imgDataList.length===0) return;
if(!type) type="json";
RES.imgDataList=imgDataList.reverse();
RES.basePath=basePath;
RES.type=type;
RES.ajax(basePath+imgDataList.pop()+"."+type)
},
ajax:function (path) {
var xhr=new XMLHttpRequest();
xhr.addEventListener("load",RES.loadHandler);
xhr.open("GET",path);
xhr.send();
},
loadHandler:function (e) {
this.removeEventListener("load",RES.loadHandler);
var key,obj;
if(RES.type==="json"){
obj=JSON.parse(this.response);
key=obj.meta.image.split(".png")[0];
list[key]=obj.frames;
}else if(RES.type==="xml"){
obj=this.responseXML.children[0];
key=obj.getAttribute("imagePath").split(".png")[0];