|
34 | 34 | var props = booleanProps.concat(numericProps, stringProps, arrayProps); |
35 | 35 |
|
36 | 36 | function StackFrame(obj) { |
37 | | - if (obj instanceof Object) { |
38 | | - for (var i = 0; i < props.length; i++) { |
39 | | - if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) { |
40 | | - this['set' + _capitalize(props[i])](obj[props[i]]); |
41 | | - } |
| 37 | + if (!obj) return; |
| 38 | + for (var i = 0; i < props.length; i++) { |
| 39 | + if (obj[props[i]] !== undefined) { |
| 40 | + this['set' + _capitalize(props[i])](obj[props[i]]); |
42 | 41 | } |
43 | 42 | } |
44 | 43 | } |
|
68 | 67 | }, |
69 | 68 |
|
70 | 69 | toString: function() { |
71 | | - var functionName = this.getFunctionName() || '{anonymous}'; |
72 | | - var args = '(' + (this.getArgs() || []).join(',') + ')'; |
73 | | - var fileName = this.getFileName() ? ('@' + this.getFileName()) : ''; |
74 | | - var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : ''; |
75 | | - var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : ''; |
76 | | - return functionName + args + fileName + lineNumber + columnNumber; |
| 70 | + var fileName = this.getFileName() || ''; |
| 71 | + var lineNumber = this.getLineNumber() || ''; |
| 72 | + var columnNumber = this.getColumnNumber() || ''; |
| 73 | + var functionName = this.getFunctionName() || ''; |
| 74 | + if (this.getIsEval()) { |
| 75 | + if (fileName) { |
| 76 | + return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')'; |
| 77 | + } |
| 78 | + return '[eval]:' + lineNumber + ':' + columnNumber; |
| 79 | + } |
| 80 | + if (functionName) { |
| 81 | + return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')'; |
| 82 | + } |
| 83 | + return fileName + ':' + lineNumber + ':' + columnNumber; |
77 | 84 | } |
78 | 85 | }; |
79 | 86 |
|
|
0 commit comments