From 19f00e1b4bdd78ed994887e005a098f3448c3726 Mon Sep 17 00:00:00 2001 From: Yavor Georgiev Date: Thu, 2 Feb 2017 02:41:11 +0100 Subject: [PATCH] Rework #832 (#833) --- lib/extensions.js | 14 ++++++++++++++ src/jsc/jsc_class.hpp | 5 +---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/extensions.js b/lib/extensions.js index c484c3dd..163a6d20 100644 --- a/lib/extensions.js +++ b/lib/extensions.js @@ -25,10 +25,21 @@ let getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function(obj }, {}); }; +function setConstructorOnPrototype(klass) { + if (klass.prototype.constructor !== klass) { + Object.defineProperty(klass.prototype, 'constructor', { value: klass, configurable: true, writable: true }); + } +} + module.exports = function(realmConstructor) { // Add the specified Array methods to the Collection prototype. Object.defineProperties(realmConstructor.Collection.prototype, require('./collection-methods')); + setConstructorOnPrototype(realmConstructor.Collection); + setConstructorOnPrototype(realmConstructor.List); + setConstructorOnPrototype(realmConstructor.Results); + setConstructorOnPrototype(realmConstructor.Object); + // Add sync methods if (realmConstructor.Sync) { let userMethods = require('./user-methods'); @@ -51,6 +62,9 @@ module.exports = function(realmConstructor) { process.exit(99); }); } + + setConstructorOnPrototype(realmConstructor.Sync.User); + setConstructorOnPrototype(realmConstructor.Sync.Session); } // TODO: Remove this now useless object. diff --git a/src/jsc/jsc_class.hpp b/src/jsc/jsc_class.hpp index 769a7e6b..31e7e28b 100644 --- a/src/jsc/jsc_class.hpp +++ b/src/jsc/jsc_class.hpp @@ -48,10 +48,7 @@ class ObjectWrap { } static JSObjectRef create_constructor(JSContextRef ctx) { - JSObjectRef constructor = JSObjectMake(ctx, get_constructor_class(), nullptr); - JSObjectRef prototype = (JSObjectRef)Object::get_property(ctx, constructor, "prototype"); - Object::set_property(ctx, prototype, "constructor", constructor); - return constructor; + return JSObjectMake(ctx, get_constructor_class(), nullptr); } static JSClassRef get_class() {