<script type="text/javascript">




var Class =
{

create:function ()
{

return function()
{
this.initialize.apply(this,arguments);
}
}

}

var FileUpload = Class.create();




function Test()
{
this.initialize.apply(this,arguments); // 呵呵,可以仔細研究一下 apply() 方法了,因為確實是經典
// 這樣我們就可以在使用的時候
}


Test.prototype.initialize = function(name)
{
alert(name);
}

var aa = new Test('你好');



function Test2()
{
//this.initialize.apply(this,arguments);
this.initialize(arguments); // 這里傳遞的 arguements 就是本身了,所以使用的時候,就應該是一個數組形式,
// 不能直接訪問,而要用類似 arguments[0] 這樣的方式訪問
}


Test2.prototype.initialize = function(name)
{
alert(name);
alert(name.length);
}

var bb = new Test2('你好');


/**//*
FileUpload.prototype = {
//表單對象,文件控件存放空間
initialize: function(form, folder, options) {
this.Form = $(form);//表單
this.Folder = $(folder);//文件控件存放空間
this.Files = [];//文件集合
this.SetOptions(options);
this.FileName = this.options.FileName;
this._FrameName = this.options.FrameName;
this.Limit = this.options.Limit;
this.Distinct = !!this.options.Distinct;
this.ExtIn = this.options.ExtIn;
this.ExtOut = this.options.ExtOut;
this.onIniFile = this.options.onIniFile;
this.onEmpty = this.options.onEmpty;
this.onNotExtIn = this.options.onNotExtIn;
this.onExtOut = this.options.onExtOut;
this.onLimite = this.options.onLimite;
this.onSame = this.options.onSame;
this.onFail = this.options.onFail;
this.onIni = this.options.onIni;
if(!this._FrameName){
//為每個實例創建不同的iframe
this._FrameName = "uploadFrame_" + Math.floor(Math.random() * 1000);
//ie不能修改iframe的name
var oFrame = isIE ? document.createElement("<iframe name=\"" + this._FrameName + "\">") : document.createElement("iframe");
//為ff設置name
oFrame.name = this._FrameName;
oFrame.style.display = "none";
//在ie文檔未加載完用appendChild會報錯
document.body.insertBefore(oFrame, document.body.childNodes[0]);
}
//設置form屬性,關鍵是target要指向iframe
this.Form.target = this._FrameName;
this.Form.method = "post";
//注意ie的form沒有enctype屬性,要用encoding
this.Form.encoding = "multipart/form-data";

//整理一次
this.Ini();
},
//設置默認屬性
SetOptions: function(options) {
this.options = {//默認值
FileName: "filename",//文件上傳控件的name,配合后臺使用
FrameName: "",//iframe的name,要自定義iframe的話這里設置name
onIniFile: function(){},//整理文件時執行(其中參數是file對象)
onEmpty: function(){},//文件空值時執行
Limit: 10,//文件數限制,0為不限制
onLimite: function(){},//超過文件數限制時執行
Distinct: true,//是否不允許相同文件
onSame: function(){},//有相同文件時執行
ExtIn: ["gif","jpg","rar","zip","iso","swf"],//允許后綴名
onNotExtIn: function(){},//不是允許后綴名時執行
ExtOut: [],//禁止后綴名,當設置了ExtIn則ExtOut無效
onExtOut: function(){},//是禁止后綴名時執行
onFail: function(){},//文件不通過檢測時執行(其中參數是file對象)
onIni: function(){}//重置時執行
};
Extend(this.options, options || {});
},
//整理空間
Ini: function() {
//整理文件集合
this.Files = [];
//整理文件空間,把有值的file放入文件集合
Each(this.Folder.getElementsByTagName("input"), Bind(this, function(o){
if(o.type == "file"){ o.value && this.Files.push(o); this.onIniFile(o); }
}))
//插入一個新的file
var file = document.createElement("input");
file.name = this.FileName; file.type = "file"; file.onchange = Bind(this, function(){ this.Check(file); this.Ini(); });
this.Folder.appendChild(file);
//執行附加程序
this.onIni();
},
//檢測file對象
Check: function(file) {
//檢測變量
var bCheck = true;
//空值、文件數限制、后綴名、相同文件檢測
if(!file.value){
bCheck = false; this.onEmpty();
} else if(this.Limit && this.Files.length >= this.Limit){
bCheck = false; this.onLimite();
} else if(!!this.ExtIn.length && !RegExp("\.(" + this.ExtIn.join("|") + ")$", "i").test(file.value)){
//檢測是否允許后綴名
bCheck = false; this.onNotExtIn();
} else if(!!this.ExtOut.length && RegExp("\.(" + this.ExtOut.join("|") + ")$", "i").test(file.value)) {
//檢測是否禁止后綴名
bCheck = false; this.onExtOut();
} else if(!!this.Distinct) {
Each(this.Files, function(o){ if(o.value == file.value){ bCheck = false; } })
if(!bCheck){ this.onSame(); }
}
//沒有通過檢測
!bCheck && this.onFail(file);
},
//刪除指定file
Delete: function(file) {
//移除指定file
this.Folder.removeChild(file); this.Ini();
},
//刪除全部file
Clear: function() {
//清空文件空間
Each(this.Files, Bind(this, function(o){ this.Folder.removeChild(o); })); this.Ini();
}
}
*/
</script>
posted on 2008-12-05 11:39
CopyHoo 閱讀(581)
評論(0) 編輯 收藏 所屬分類:
JavaScript