diff --git a/jsre/pp_js.go b/jsre/pp_js.go
index 0b22afe6d3758c77150e926f98f47d16890a74d9..2badb90e72cee5a1b71b8d1fc9bc532e78925699 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 = "";