aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jsre/pp_js.go23
1 files changed, 20 insertions, 3 deletions
diff --git a/jsre/pp_js.go b/jsre/pp_js.go
index 4e0a04f83..e5e52b1a2 100644
--- a/jsre/pp_js.go
+++ b/jsre/pp_js.go
@@ -70,15 +70,32 @@ var redundantFields = [
];
var getFields = function (object) {
- var result = Object.getOwnPropertyNames(object);
+ var members = Object.getOwnPropertyNames(object);
if (object.constructor && object.constructor.prototype) {
- result = result.concat(Object.getOwnPropertyNames(object.constructor.prototype));
+ members = members.concat(Object.getOwnPropertyNames(object.constructor.prototype));
}
- return result.filter(function (field) {
+
+ var fields = members.filter(function (member) {
+ return !isMemberFunction(object, member)
+ }).sort()
+ var funcs = members.filter(function (member) {
+ return isMemberFunction(object, member)
+ }).sort()
+
+ var results = fields.concat(funcs);
+ return results.filter(function (field) {
return redundantFields.indexOf(field) === -1;
});
};
+var isMemberFunction = function(object, member) {
+ try {
+ return typeof(object[member]) === "function";
+ } catch(e) {
+ return false;
+ }
+}
+
var isBigNumber = function (object) {
return typeof BigNumber !== 'undefined' && object instanceof BigNumber;
};