自知其无知
不懂,慢慢懂。
posts - 2,comments - 2,trackbacks - 0
<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 阅读(577) 评论(0)  编辑  收藏 所属分类: JavaScript

只有注册用户登录后才能发表评论。


网站导航: