Javascript OOP方法返回“不是函数”

时间:2019-11-03 10:37:51

标签: javascript oop javascript-objects

作为JS开发的新内容,我已经开始了OOP,从我的角度来看,它是JS难度更大但也是最有趣的部分。

有我的代码:

var calc = function(num1, num2){
  this.num1 = num1;
  this.num2 = num2;
  this.addNum2 = function(number){
    this.num2 = number;
  }
}

现在,我正在尝试使用function addNum2将num2设置为

calc.addNum2(24)

我得到了这个回报:

  

VM495:1未捕获的TypeError:calc.addNum2不是函数

我只是在这里了解它的工作原理,因此任何帮助都是宝贵的。 谢谢大家!

1 个答案:

答案 0 :(得分:3)

您需要使用new operator

调用函数

function calc(num1, num2) {
  this.num1 = num1;
  this.num2 = num2;
  this.addNum2 = function(number) {
    this.num2 = number;
  }
}

let newCalc = new calc()
newCalc.addNum2(2)
console.log(newCalc.num2)


或者您需要从函数中返回this

function calc(num1, num2) {
  this.num1 = num1;
  this.num2 = num2;
  this.addNum2 = function(number) {
    this.num2 = number;
  }
  return this
}

let newCalc = calc()
newCalc.addNum2(2)
console.log(newCalc.num2)


  

我想说:newCalc.addNum2(4).mutiply(5);

function calc(num1, num2) {
  this.num1 = num1;
  this.num2 = num2;
  this.addNum2 = function(number) {
    this.num2 = number;
    return this
  }
  this.multiply = function(number){
    this.num2 = this.num2 * number
    return this
  }
  return this
}

let newCalc = calc()
newCalc.addNum2(2).multiply(3)
console.log(newCalc.num2)