To get a pointer to the instantiating function (which is not a "class", but is the type), use obj.constructor where obj is any object.
In JavaScript there are no classes. As such, there are no class instances in JavaScript. There are only objects. Objects inherit from other objects (their so called prototypes). What you are doing in your code is literally defining an object T, which's attribute Q is another object, which's attribute W is another object, which's attribute C is a function.
When you are "creating a new instance of T.Q.W.C", you are actually only calling the function T.Q.W.C as a constructor. A function called as a constructor will return a new object on which the constructor function was called (that is with this beeing the new object, like constructorFunction.apply(newObject, arguments);). That returned object will have a hidden property constructor which will point to the function that was invoked as a constrcutor to create the object. Additionally there is a language feature which allows you to test if a given function was used as the constructor function for an object using the instanceof operator.
So you could do the following:
console.log(x instanceof T.Q.W.C);
OR
console.log(x.constructor === T.Q.W.C);
xis an instance and yes, usingnewis pretty reliable to get an instance. Maybe you are looking forinstancof, to get the type of the instance? developer.mozilla.org/en/JavaScript/Reference/Operators/Special/…Object.getPrototypeOf(instanceName).constructorto safely access (due to immutability) the object's constructor function, which will be its actual JS type (e.g. the type of itsclass, or justObject,Function,Number,String, etc.), and then usetheType.nameto get the string name of said type. For unsafe access, you could simply useinstanceName.constructor.instanceoflike the other comments/answers describe. More likely one would be usingclasses withextendsfor inheritance..prototype) and then usesuper.constructorinstead. Note that here you can't useObject.getPrototypeOf(super), becausesuperis just a JS keyword. You could then for instancereturnthe type from the function. It seems that you can only ever access 1super, the immediate parent, though... Another approach would be to storethis.constructororsuper.constructoras a property of eachclass............................................