Как получить класс объекта JavaScript?

Ресурс, в котором я всегда возвращаюсь к сообщениям в формате HTML, - это руководство по кампаниям CampaignMonitor .

Поскольку их бизнес ориентирован исключительно на доставку электронной почты, они также знают свой материал как кто-то собирается

612
задан Boann 27 December 2014 в 13:04
поделиться

5 ответов

В JavaScript нет точного аналога getClass () Java. В основном это связано с тем, что JavaScript является языком на основе прототипов , в отличие от Java, основанным на классах .

В зависимости от того, что вам нужно getClass () для, в JavaScript есть несколько вариантов:

Несколько примеров:

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

Примечание: если вы компилируете свой код с помощью Uglify, он изменит имена неглобальных классов. Чтобы предотвратить это, в Uglify есть параметр - mangle , который можно установить в значение false, используя gulp или grunt .

928
ответ дан 22 November 2019 в 21:44
поделиться

Javascript - это бесклассовый язык: нет классов, которые статически определяют поведение класса, как в Java. JavaScript использует прототипы вместо классов для определения свойств объекта, включая методы и наследование. Можно смоделировать многие функции на основе классов с помощью прототипов в JavaScript.

-2
ответ дан 22 November 2019 в 21:44
поделиться

В javascript нет классов, но я думаю, что вам нужно имя конструктора и obj.constructor .toString () сообщит вам, что вам нужно.

2
ответ дан 22 November 2019 в 21:44
поделиться

Вы можете получить ссылку на функцию конструктора, которая создала объект, используя свойство конструктора :

function MyObject(){
}

var obj = new MyObject();
obj.constructor; // MyObject

Если вам необходимо подтвердить тип объекта во время выполнения вы можете использовать оператор instanceof :

obj instanceof MyObject // true
12
ответ дан 22 November 2019 в 21:44
поделиться

Эта функция возвращает либо «undefined» , «null» , либо «класс» в [ класс объекта] из Object.prototype.toString.call (someObject) .

function getClass(obj) {
  if (typeof obj === "undefined")
    return "undefined";
  if (obj === null)
    return "null";
  return Object.prototype.toString.call(obj)
    .match(/^\[object\s(.*)\]$/)[1];
}

getClass("")   === "String";
getClass(true) === "Boolean";
getClass(0)    === "Number";
getClass([])   === "Array";
getClass({})   === "Object";
getClass(null) === "null";
// etc...
28
ответ дан 22 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: