azzz 31.05.2011 05:40 Psi+

JavaScript меня печалит:
function Foobar(){}
var obj = new Foobar();
console.log(typeof obj) // ← тип переменной — object. Ну почему так плохо, а? Почему не Fobar тип? Почему в js если не базовый тип, так object? :(

js
1. arts 31.05.2011 05:54

Неудобно иногда, да.

2. azzzarts /1 31.05.2011 05:58 Psi+

т.е. никак не узнать класс, да?..

3. artsazzz /2 31.05.2011 06:00

Можно проверить, является ли он экземпляром Foobar

4. artsazzz /2 31.05.2011 06:02

Можно выколупать регэкспом из obj.__proto__.constructor.toSource() :-)

5. azzzarts /3 31.05.2011 06:03 Psi+

Это-то можно... Беда, короче. Эх

6. artsazzz /5 31.05.2011 06:08

Держи:-)
Object.prototype.getClass = function(){
var m = this.__proto__.constructor.toSource().match(/^function\s+(\w+)/);
if (1 in m) return m[1];
}

obj.getClass()

7. azzzarts /6 31.05.2011 06:14 Psi+

хе, toSource() нет в V8:)

8. artsazzz /7 31.05.2011 06:16

toString

9. azzzazzz /7 31.05.2011 06:16 Psi+

О, а toString() конструктора как раз возвращает код

Do you really want to delete ?