Sunday 26 June 2016

oop - How to get a JavaScript object's class?



I created a JavaScript object, but how I can determine the class of that object?



I want something similar to Java's .getClass() method.


Answer



There's no exact counterpart to Java's getClass() in JavaScript. Mostly that's due to JavaScript being a prototype-based language, as opposed to Java being a class-based one.




Depending on what you need getClass() for, there are several options in JavaScript:





A few examples:



function Foo() {}
var foo = new Foo();


typeof Foo; // == "function"
typeof foo; // == "object"

foo instanceof Foo; // == true
foo.constructor.name; // == "Foo"
Foo.name // == "Foo"

Foo.prototype.isPrototypeOf(foo); // == true

Foo.prototype.bar = function (x) {return x+x;};

foo.bar(21); // == 42


Note: if you are compiling your code with Uglify it will change non-global class names. To prevent this, Uglify has a --mangle param that you can set to false is using gulp or grunt.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...