2016-06-10 2 views
0

мне нужен кто-то, чтобы объяснить мне, почему bob instanceof Person возвращает ложь из этого кода:Почему bob instanceof Person возвращает false?

var Person = function(firstAndLast) { 

    var names = firstAndLast.split(' '); 

    return { 

     getFirstName: function() { 
      return names[0]; 
     }, 

     getLastName: function() { 
      return names[1]; 
     }, 

     getFullName: function() { 
      return names[0] + " " + names[1]; 
     }, 

     setFirstName: function(first) { 
      names[0] = first; 
     }, 

     setLastName: function(last) { 
      names[1] = last; 
     }, 

     setFullName: function(firstAndLast) { 
      names = firstAndLast.split(' '); 
     } 

    }; 

}; 

var bob = new Person('Bob Ross'); 

Я пытался искать ответ, но я не мог найти ничего. Насколько я понимаю, bob instanceof Person должен возвращать true, но это не так.

+0

Не конструктор без 'this'. – PHPglue

ответ

2

Проблема в том, что вы возвращаете объект из конструктора. Этот объект не является объектом, который был инициализирован new, поэтому он не является экземпляром класса Person. Вы должны назначить this.propertyname в конструкторе и вернуть его значение по умолчанию.

var Person = function(firstAndLast) { 
 

 
    var names = firstAndLast.split(' '); 
 

 

 
    this.getFirstName = function() { 
 
    return names[0]; 
 
    }; 
 

 
    this.getLastName = function() { 
 
    return names[1]; 
 
    }; 
 

 
    this.getFullName = function() { 
 
    return names[0] + " " + names[1]; 
 
    }; 
 

 
    this.setFirstName = function(first) { 
 
    names[0] = first; 
 
    }; 
 

 
    this.setLastName = function(last) { 
 
    names[1] = last; 
 
    }; 
 

 
    this.setFullName = function(firstAndLast) { 
 
    names = firstAndLast.split(' '); 
 
    }; 
 

 
}; 
 

 
var bob = new Person('Bob Ross'); 
 

 
console.log(bob instanceof Person);

+0

Спасибо, что имеет смысл – smmaca

Смежные вопросы