aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jsre/pp_js.go25
1 files changed, 22 insertions, 3 deletions
diff --git a/jsre/pp_js.go b/jsre/pp_js.go
index 0b22afe6d..2badb90e7 100644
--- a/jsre/pp_js.go
+++ b/jsre/pp_js.go
@@ -30,8 +30,8 @@ function pp(object, indent) {
} else if(typeof(object) === "object") {
str += "{\n";
indent += " ";
- var last = Object.getOwnPropertyNames(object).pop()
- Object.getOwnPropertyNames(object).forEach(function (k) {
+ var last = getFields(object).pop()
+ getFields(object).forEach(function (k) {
str += indent + k + ": ";
try {
str += pp(object[k], indent);
@@ -63,11 +63,30 @@ function pp(object, indent) {
return str;
}
+var redundantFields = [
+ 'valueOf',
+ 'toString',
+ 'toLocaleString',
+ 'hasOwnProperty',
+ 'isPrototypeOf',
+ 'propertyIsEnumerable',
+ 'constructor'
+];
+
+var getFields = function (object) {
+ var result = Object.getOwnPropertyNames(object);
+ if (object.constructor && object.constructor.prototype) {
+ result = result.concat(Object.getOwnPropertyNames(object.constructor.prototype));
+ }
+ return result.filter(function (field) {
+ return redundantFields.indexOf(field) === -1;
+ });
+};
+
var isBigNumber = function (object) {
return typeof BigNumber !== 'undefined' && object instanceof BigNumber;
};
-
function prettyPrint(/* */) {
var args = arguments;
var ret = "";