是否可以对File对象进行原型设计?我目前遇到的问题是Firefox 7+中的File对象不再具有fileName
属性,而是name
属性。
我的代码广泛依赖于fileName
,我希望找到一种比更改所有实例更简单的方法。
答案 0 :(得分: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 :(得分:1)
也许创建File.prototype.fileName setter和getter,即set / get name,将解决你的问题。
但是,我真的不知道它是如何工作的,我也不知道下面的代码是否有效。
if(! ("name" in File.prototype) ){
File.prototype.fileName = {
get function(){
return this.name;
},
set function(val){
this.name = val;
}
};
}