Javascript ООП Метод возврата "не является функцией" - PullRequest
0 голосов
/ 03 ноября 2019

Как новичок в разработке JS, я запустил ООП, которая, с моей точки зрения, является более сложной, но и самой интересной частью 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 Uncaught TypeError: calc.addNum2 не является функцией

Я просто здесь, чтобы понять, как это работает, поэтому любая помощь будет драгоценной. Спасибо всем!

1 Ответ

3 голосов
/ 03 ноября 2019

Вам нужно вызвать функцию с помощью 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)
...