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

相关问题