2011-11-20 51 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; 
     } 
    }; 
}