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.