Czy jest możliwe sprawdzenie do jakiej klasy należy obiekt??

0

Jak w temacie. Jak mam coś takiego:

var ob = new klasa();
alert(typeof ob);

typeof wyświetli tylko object, a ja chce żeby wyświetliła się nazwa klasy
czyli alert wyświetli słowo "klasa".
Jest coś takiego możliwe??

dodanie znacznika <code class="javascript"> - furious programming

0

W JS nie ma czegoś takiego jak "nazwa klasy", bo i klas nie ma.
Ale możesz sprawdzić nazwę funkcji tworzącej (konstruktora):

alert(ob.constructor.name);

możesz też spróbować z instanceof
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

możesz też zrobić coś własnego, niestandardowego. Np. przesłonić metodę toString,np. (w konstruktorze):

this.toString = function () {
  return 'Moja nazwa zamiast [object]';
}

wtedy będziesz mógł porównywać:

var zmienna = new Costam;
alert(zmienna);
if (zmienna == 'Moja nazwa zamiast [object]') {
//   zmienna jest tego i tego typu
}

ale raczej używałbym z rozsądkiem (bo ta sztuczka polega na słabym typowaniu JS i automatycznej konwersji do stringów, więc raczej trzeba z ostrożnością używać).

albo zrobić specjalną zmienną "type", albo jakkolwiek to sobie nazwiesz, która będzie oznaczać typ, wtedy byś się odwoływał poprzez

function Konstruktor() {
  this.type = "moja nazwa typu";
}
.......................
// kod:
var ob = new Konstruktor();
alert(ob.type);

itp. W każdym razie klas w JS nie ma, są konstruktory i prototypy.

0

Napiszę to w C++ powinieneś zrozumieć.

 
#include <iostream>
class a{
	int a = 16;
	public:
		int dajA() //funkcja tylko na pokaz
		{
			return a;
		} 
		void NazwaMojejKlasy()
		{
			std::cout<<"Obiekt pochodzi z klasy o nazwie A"<<std::endl;	
		}
};
class b{
	int b = 32;
	public:
		int dajB() //funkcja tylko na pokaz
		{
			return b;
		} 
		void NazwaMojejKlasy()
		{
			std::cout<<"Obiekt pochodzi z klasy o nazwie B"<<std::endl;	
		}
};

int main()
{
	a zxc;
	zxc.NazwaMojejKlasy();
	
	b cxz;
	cxz.NazwaMojejKlasy();
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1