Почему комбинация конструктор / шаблон прототипа возвращает typeof как объект? - PullRequest
0 голосов
/ 04 июля 2011

Мне трудно понять, почему typeof не возвращает MyObject для экземпляра MyObject при использовании этого шаблона конструктора / прототипа - он возвращает объект в экземпляре, созданном new, с помощью конструктора MyObject после того, как прототип для MyObject имеетесли его конструктор установлен в MyObject - может кто-нибудь объяснить, почему?

function MyObject(foo, bar) {
  this.foo = foo;
  this.bar = bar;
}

MyObject.prototype = {
  constructor: MyObject,
  someFunc: function() {
    console.log(foo + " and " + bar);
  }  
}

var newObject = new MyObject("a", "b");
typeof newObject;

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Используйте оператор instanceof, если хотите проверить, что: newObject instanceof MyObject; (возвращает true)

Больше информации о том, почему typeof ведет себя так: http://javascript.crockford.com/remedial.html

1 голос
/ 04 июля 2011

typeof возвращает только «объект», см. https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/typeof

Что вам, вероятно, нужно, это: Как получить класс объекта JavaScript?

...