Re-implementing basics
There is no reason to do this, but you can not deny that it is interesting.
Did you know, that new is not that special, and you could do it yourself?
function myNew (constructor, options) {
var instance = Object.create(constructor.prototype);
constructor.call(instance, options);
return instance;
}I am not sure how to handle arguments without apply, because that would kind of defeat the purpose. Here is another way.
Function.prototype.myCall = function (context, arg1, arg2, arg3isTooMuch) {
context.magicalMethodName = this;
return context.magicalMethodName(options, arg1, arg2, arg3isTooMuch);
}