I'm writing a JavaScript/PHP file uploader and I want to start this project off on the right track. I've started with this, a JavaScript Uploader
object which will handle Ajax calls, display progress, show error messages, etc. I'm just hoping to get some feedback on the way I'm setting up my scripts.
function Uploader(method) {
if(arguments.callee._singleton) return arguments.callee._singleton;
var _this = arguments.callee._singleton = this;
_this.opts = {
form:"#uploader",
filePath:"public/uploads/",
errorCodes:{
1:"No file/folder selected",
2:"Invalid file/folder type",
3:"File/folder exceeds upload size"
}
}
_this.methods = {
init: function(options) {
for(var o in options) {
_this.opts[o] = options[o];
}
_this.methods.setup();
},
setup: function() {
}
}
if(_this.methods[method]) return _this.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
else if(typeof method === "object" || !method) return methods.init.apply(this, arguments);
}
1 Answer 1
Why not use an existing ajax file upload library, like Fine Uploader?
As for your code.
1)
I think you meant to return _this.methods.init.apply(this, arguments);
.
2)
You should rewrite Uploader to not use arguments.callee
for two reasons; it makes your code harder to read and for the browser to optimize.
-
\$\begingroup\$ Not to mention
arguments.callee
isn't supported in ECMAScript 5. \$\endgroup\$bob_cobb– bob_cobb2012年11月05日 17:20:59 +00:00Commented Nov 5, 2012 at 17:20
Explore related questions
See similar questions with these tags.
Uploader
object? The_singleton
code at the very top and the code at the very bottom (as well as the use of a local_this
variable) is confusing. \$\endgroup\$