Javascript 工厂函数的实例不是实例

Javascript 工厂函数的实例不是实例,javascript,Javascript,为什么我的车是假的?我应该如何使用工厂函数使其返回真值 为什么我的车是假的 myCar instanceof Car通过检查Car.prototype是否在myCar的原型链中工作 但是由于Car返回一个对象文本,Car.prototype不在该对象的原型链中,因此instanceof返回false 我应该如何使用工厂函数使其返回真值 没什么。如果希望instanceof工作,则必须将该函数用作构造函数(即,不要从该函数返回任何内容并使用new Car()调用它) 我认为工厂函数返回的实例不应被

为什么我的车是假的?我应该如何使用工厂函数使其返回真值

为什么我的车是假的

myCar instanceof Car
通过检查
Car.prototype
是否在
myCar
的原型链中工作

但是由于
Car
返回一个对象文本,
Car.prototype
不在该对象的原型链中,因此
instanceof
返回
false

我应该如何使用工厂函数使其返回真值

没什么。如果希望
instanceof
工作,则必须将该函数用作构造函数(即,不要从该函数返回任何内容并使用
new Car()调用它)


我认为工厂函数返回的实例不应被视为该函数的实例。

创建对象时需要使用“new”关键字。我在下面添加了一些代码和一些修复程序,这意味着您不需要在父级中返回任何内容

var Car = function(name){
    var name = name;

    function test(){
        console.log(name);
    }

    return{
        test
    }
}

var myCar = Car("a");
console.log(myCar instanceof Car); // false
var Car = function(name){
  this.name = name;

  function test(){
      console.log(name);
  }
}
var myCar = new Car('hello');
console.log(myCar.name); // Now returns 'hello'
console.log(myCar instanceOf Car) // Returns true