Javascript 函数错误中的方法 "is not a function"

Javascript method in Function Error with "is not a function"

我一直在用 class 学习基本的 Javascript 概念。 我正在尝试使用 ES5 语法。

顺便说一句,我被这个问题困住了。 我用函数声明定义了一个 class 。并在 class 中定义了一个方法。

const Vehicle = function() {
  this.passengers = [];
  console.log('Vehicle created');

  const addPassenger = function(p) {
    this.passengers.push(p);
  }
}

const v = new Vehicle();

v.addPassenger("Frank");
v.addPassenger("Zim");
console.log(v.passengers);

但是当我用它的实例调用它时,我得到了错误。我认为问题是绑定......但我不知道我应该在哪里绑定哪个。

谢谢!

您目前仅将 addPassenger 函数声明为函数内部的常量。

到"make the function part of class",使用this

this.addPassenger = function(p) {
////
}

当您使用 const or function 语法在 vehicle 函数内部创建一个函数时,它不属于实例变量并且是构造函数私有的。为了从实例对象中使用它,您需要为实例定义它,例如

const Vehicle = function() {
  this.passengers = [];
  console.log('Vehicle created');

  this.addPassenger = function(p) {
    this.passengers.push(p);
  }
}

const v = new Vehicle();

v.addPassenger("Frank");
v.addPassenger("Zim");
console.log(v.passengers);

您需要将 const 替换为 this

const Vehicle = function() {
  this.passengers = [];
  console.log('Vehicle created');
  this.addPassenger = function(p) {
    this.passengers.push(p);
  }
}

const v = new Vehicle();

v.addPassenger("Frank");
v.addPassenger("Zim");
console.log(v.passengers);