Прототипирование объекта File - PullRequest
0 голосов
/ 20 ноября 2011

Возможно ли создать прототип объекта File? В настоящее время у меня проблема в том, что объект File в Firefox 7+ больше не имеет атрибута fileName, но атрибут name.

Мой код в значительной степени опирается на fileName, и я хотел бы найти более простой способ, чем изменение всех вхождений.

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Попробуйте это:

(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 голос
/ 20 ноября 2011

Возможно, создание установщика и получателя File.prototype.fileName, который задает / получает имя, решит вашу проблему.

Однако я не совсем знаю, как это работает, и я тоже не знаю,код ниже работает.

if(! ("name" in File.prototype) ){
    File.prototype.fileName = {
      get function(){
        return this.name;
      }, 
      set function(val){
        this.name = val;
      }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...