Ресурс, в котором я всегда возвращаюсь к сообщениям в формате HTML, - это руководство по кампаниям CampaignMonitor .
Поскольку их бизнес ориентирован исключительно на доставку электронной почты, они также знают свой материал как кто-то собирается
В JavaScript нет точного аналога getClass ()
Java. В основном это связано с тем, что JavaScript является языком на основе прототипов , в отличие от Java, основанным на классах .
В зависимости от того, что вам нужно getClass ()
для, в JavaScript есть несколько вариантов:
typeof
instanceof
obj.
constructor
func.
prototype
, proto
. . 1221] isPrototypeOf Несколько примеров:
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 .
Javascript - это бесклассовый язык: нет классов, которые статически определяют поведение класса, как в Java. JavaScript использует прототипы вместо классов для определения свойств объекта, включая методы и наследование. Можно смоделировать многие функции на основе классов с помощью прототипов в JavaScript.
В javascript нет классов, но я думаю, что вам нужно имя конструктора и obj.constructor .toString ()
сообщит вам, что вам нужно.
Вы можете получить ссылку на функцию конструктора, которая создала объект, используя свойство конструктора :
function MyObject(){
}
var obj = new MyObject();
obj.constructor; // MyObject
Если вам необходимо подтвердить тип объекта во время выполнения вы можете использовать оператор instanceof :
obj instanceof MyObject // true
Эта функция возвращает либо «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...