Jak získat třídu objektu JavaScript?

Vytvořil jsem objekt JavaScript, ale jak mohu určit třídu tohoto objektu?

Chci něco podobného jako Java .getClass() metoda.

Odpověď

Neexistuje žádný přesný protějšek Java getClass() v JavaScriptu. Většinou je to způsobeno tím, že JavaScript je jazyk založený na prototypech, na rozdíl od jazyka Java, který je založen na třídách.

V závislosti na tom, co potřebujete getClass() v JavaScriptu existuje několik možností:

  • typeof
  • instanceof
  • obj. constructor
  • func. prototype , proto .isPrototypeOf

Několik příkladů:

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

Poznámka:Pokud kompilujete svůj kód pomocí Uglify, změní se neglobální názvy tříd. Aby se tomu zabránilo, Uglify má --mangle parametr, který můžete nastavit na hodnotu false, používá gulp nebo grunt.