是否可以创建File对象的原型?我目前遇到的问题是,Firefox 7+中的File对象不再具有fileName
属性,而是name
属性。原型化文件对象
我的代码广泛地依赖于fileName
,我想找到比改变所有事件更简单的方法。
是否可以创建File对象的原型?我目前遇到的问题是,Firefox 7+中的File对象不再具有fileName
属性,而是name
属性。原型化文件对象
我的代码广泛地依赖于fileName
,我想找到比改变所有事件更简单的方法。
试试这个:
(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
也许创造File.prototype.fileName setter和getter,即设置/获取名称,将解决你的问题。
但是,我真的不知道它是如何工作的,我不知道下面的代码是否工作。
if(! ("name" in File.prototype)){
File.prototype.fileName = {
get function(){
return this.name;
},
set function(val){
this.name = val;
}
};
}
你试过把它加到原型中吗? – Asken