2016-06-10 149 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

相關問題