Is there a way to add a method to all javascript functions without using the prototype library?
something along the lines of :
Function.prototype.methodN
Try Object.prototype instead:
Object.prototype.methodName = function(){
return dowhateverto(this)
};
But also heed the warning that extending native objects is not always a good idea.
Function.prototype can't really be manipulated reliably in Javascript; it isn't a real object, because Function() constructor needs to return a function, not an object. But, you can't treat it like a normal function either. Its behaviour when you try to access its 'properties' may be undefined and vary between browsers. See also this question.
Changing JS built-in objects can give you some surprises.
If you add external libraries or changing the version of one of them, you are never sure that they won't overwrite your extension.
function one(){
alert(1);
}
function two(){
alert(2);
}
var myFunctionNames = ["one", "two"];
for(var i=0; i<myFunctionNames.length; i++) {
// reference the window object,
// since the functions 'one' and 'two are in global scope
Function.prototype[myFunctionNames[i]] = window[myFunctionNames[i]];
}
function foo(){}
foo.two(); // will alert 2
Sure. Functions are objects:
var foo = function() {};
Function.prototype.bar = function() {
alert("bar");
};
foo.bar();
Will alert "bar"