在另一个方法中使用一个方法
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();
我不确定这是不是错误代码,或者将 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();