2011-11-20 87 views
0

是否可以创建File对象的原型?我目前遇到的问题是,Firefox 7+中的File对象不再具有fileName属性,而是name属性。原型化文件对象

我的代码广泛地依赖于fileName,我想找到比改变所有事件更简单的方法。

+0

你试过把它加到原型中吗? – Asken

回答

2

试试这个:

(function(File){ 

    if(!File) { 
    return; 
    } 


    function getFileName(){ 
    return this.name; 
    } 

File.prototype.__defineGetter__("fileName", getFileName); 

})(window.File) 

应该对有fileName,因为原型是只能看着,如果它不是在一个File实例对象本身发现浏览器没有任何影响。

的jsfiddle:http://jsfiddle.net/Sj3B2/2/(在Firefox测试,Chrome和Opera)

编辑,因为歌剧不支持Object.defineProperty

1

也许创造File.prototype.fileName setter和getter,即设置/获取名称,将解决你的问题。

但是,我真的不知道它是如何工作的,我不知道下面的代码是否工作。

if(! ("name" in File.prototype)){ 
    File.prototype.fileName = { 
     get function(){ 
     return this.name; 
     }, 
     set function(val){ 
     this.name = val; 
     } 
    }; 
}