工厂功能的实例不是实例


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

为什么汽车返回false的Mycar实例?我该怎么办才能使用工厂功能返回真实?

为什么汽车的Mycar实例返回false?

myCar instanceof Car通过检查Car.prototype是否在myCar的原型链中来起作用。

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

我该怎么办,使用工厂功能返回真实?

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

我认为,由A factory 函数返回的实例不应被视为该功能的实例。

创建对象时需要使用'新'关键字。我在下面放了一些代码,并使用几个修复程序,这意味着您不需要返回父母中的任何内容。

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

相关内容

最新更新