在另一个方法中使用一个方法

Using a method inside another method

我不确定这是不是错误代码,或者将 isPrime 函数放在方法中然后在 printSomething 方法中使用该方法是否“更好”?如果是这样,那怎么可能我在另一种方法中使用一种方法?



class PrimeNumbers{
    constructor(isPrime, number){

        this.isPrime = isPrime;
        this.succes = "succes";
        this.failure = "failure";
        this.number = number;

    }


    printSomething(isPrime){
        if (!this.isPrime(this.number)) {
            console.log(this.succes);
        } else {
            console.log(this.failure);
        }
    }

}

function isPrime(value) {
    if (value == 1) return false;
    for (let i = 2; i <= Math.sqrt(value); i++) {
        if (value % i == 0) {
            return false;
        }
    }
    return true;
}



let primeTest = new PrimeNumbers(isPrime, 10)
primeTest.printSomething()

希望有人能比我更好地解释这一点。如果他们不...您可以将 isPrime 添加为 PrimeNumbers 上的方法,然后将其与 this.isPrime() 一起使用。这里,this 指的是您正在处理的当前对象。

当您执行 let primeTest = new PrimeNumbers(10); primeTest 成为 PrimeNumbers 的实例时,当您执行 primeTest.printSomething() 时,您正在访问 primeTest 上的 printSomething 属性 并调用它。一旦代码在 printSomething 中执行,它通常需要一种方法来引用存储在 primeTest 中的对象,这就是 this 关键字所做的;它允许您引用代码运行时正在处理的对象的特定实例。

This page 可能更善于解释我刚才试图解释的内容。

在是否添加 isPrime 比较好方面 class。我不太确定,这可能取决于其他一些事情。如果你不把它添加到 class 中,你就不太可能需要将函数作为参数传递给构造函数(尽管可能有这样做的理由,但如果你总是传入的话,可能没有意义相同的函数)你可以只调用 class 方法中的函数。

isPrime 作为方法:

class PrimeNumbers{
  constructor(number){
    this.succes = "succes";
    this.failure = "failure";
    this.number = number;
  }

  printSomething(){
    if (!this.isPrime(this.number)) {
      console.log(this.succes);
    } else {
      console.log(this.failure);
    }
  }

  isPrime(value) {
    if (value == 1) return false;
    for (let i = 2; i <= Math.sqrt(value); i++) {
      if (value % i == 0) {
        return false;
      }
    }
    return true;
  }
}


let primeTest = new PrimeNumbers(10);
primeTest.printSomething();

isPrime 作为从 class:

调用的函数

function isPrime(value) {
  if (value == 1) return false;
  for (let i = 2; i <= Math.sqrt(value); i++) {
    if (value % i == 0) {
      return false;
    }
  }
  return true;
}

class PrimeNumbers{
  constructor(number){
    this.succes = "succes";
    this.failure = "failure";
    this.number = number;
  }

  printSomething(){
    if (!isPrime(this.number)) {
      console.log(this.succes);
    } else {
      console.log(this.failure);
    }
  }
}


let primeTest = new PrimeNumbers(10);
primeTest.printSomething();