类型error primeFactors.for不是函数

Type error primeFactors.for is not a function

本文关键字:函数 for error primeFactors 类型      更新时间:2023-09-26

我从Jasmine那里收到了一个"TypeError:primeFactors.for不是函数"错误。当我尝试运行此代码时,我已经多次遇到这种类型的错误。解决问题的最佳方法是什么?我很清楚。因为不是函数,但我不知道为什么?

var primeFactors = function(){};
primeFactors.prototype.for = function(num){
    var array = [];
    for(var i = 2; i < Math.ceil(Math.sqrt(num)); i++){
        if(num % i === 0){
            array.push(i);
            num = num/i;
            i--;
        }
    }
    return array;
};

module.exports = primeFactors;

当您想要调用.for时,您必须为该原型创建一个对象实例,例如使用new关键字:

这不好:

 primeFactors.for(3);

但这还可以:

 var obj = new primeFactors;
 obj.for(3);

对于你的Jasmine测试,它会这样工作:

 it('returns an empty array for 1', function() {
     expect((new primeFactors).for(1)).toEqual([]);
 });

如果测试编写正确,您可以使用静态函数(类内)来传递它们。看看:https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Classes/static

"use strict";
class primeFactors {
    static for(num) {
    var array = [];
    for(var i = 2; i < Math.ceil(Math.sqrt(num)); i++){
        if(num % i === 0){
            array.push(i);
            num = num/i;
            i--;
        }
    }
    return array;
    }
};
module.exports = primeFactors;