Javascript 创建文件对象的原型

Javascript 创建文件对象的原型,javascript,cross-browser,Javascript,Cross Browser,是否可以对文件对象进行原型化?我目前的问题是Firefox7+中的文件对象不再具有fileName属性,而是具有name属性 我的代码在很大程度上依赖于文件名,我想找到一种比更改所有事件更简单的方法。尝试以下方法: (function(File){ if( !File ) { return; } function getFileName(){ return this.name; } File.prototype.__defineGette

是否可以对文件对象进行原型化?我目前的问题是Firefox7+中的文件对象不再具有
fileName
属性,而是具有
name
属性

我的代码在很大程度上依赖于
文件名
,我想找到一种比更改所有事件更简单的方法。

尝试以下方法:

(function(File){

    if( !File ) {
    return;
    }


    function getFileName(){
    return this.name;
    }

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

})(window.File)
它应该对具有
文件名的浏览器没有影响,因为只有在
文件
实例对象本身中找不到原型时,才会查看原型

JSFIDLE:(在firefox、chrome和opera中测试)

已编辑,因为opera不支持
对象。请尝试以下操作:

(function(File){

    if( !File ) {
    return;
    }


    function getFileName(){
    return this.name;
    }

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

})(window.File)
它应该对具有
文件名的浏览器没有影响,因为只有在
文件
实例对象本身中找不到原型时,才会查看原型

JSFIDLE:(在firefox、chrome和opera中测试)


由于opera不支持对象。defineProperty

可能创建File.prototype.fileName setter和getter(设置/获取名称)可以解决您的问题

然而,我并不知道它是如何工作的,我也不知道下面的代码是否有效

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

也许创建File.prototype.fileName setter和getter,即set/get名称,可以解决您的问题

然而,我并不知道它是如何工作的,我也不知道下面的代码是否有效

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

您是否尝试将其添加到原型中?您是否尝试将其添加到原型中?