There's an old trick (that I learned on SO) to catch calling a constructor as a function, i.e. forgetting the new
keyword. The following, or something like, it goes in each constructor at the top.
if (!(this instanceof arguments.callee)) {
throw Error("Constructor called as a function");
}
What are the alternatives when you need to "use strict";
?
Can its generic nature be retained? Or do we have to use the name of the constructor in place of arguments.callee
?