-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Inside the typeOf function, the arguments object is detected using the callee property:
if ( 'callee' in obj )
// Opera: Object.prototype.toString.call(arguments) == 'Object' :(
This creates a problem in at least two situations:
- When dealing with regular objects containing the
calleeproperty, such as AST nodes resulting from parsing JavaScript by a parser conforming to Mozilla SpiderMonkey Parser API (or its successor, The ESTree Spec). - In JavaScript strict mode, which defines (5.1, 6.0) the
calleegetter to throw an exception. This can be demonstrated e.g. using this code in recent Chrome:(function() { "use strict"; arguments.callee; })();).
The first case frequently bites users of the online editor at PEG.js website.
Since Object.prorotype.toString called on an arguments object returns [object Arguments] on recent versions of all common browsers (including Opera mentioned in a comment in jsDump code), I think it would be better to rewrite the detection to use it to detect arguments instead of the callee property.
Metadata
Metadata
Assignees
Labels
No labels