o = { toString: Function.prototype.toString }; o.toString() produces "TypeError: Type error" It would be nice if the output was more descriptive; e.g. SpiderMonkey produces "TypeError: Function.prototype.toString called on incompatible object", and V8 produces "TypeError: Function.prototype.toString is not generic".