我正在创建一个像下面的功能

function calculation(){
    this.add=function(x,y){
        return x+y;
    }
    calculation.sub=function(x,y){
        return x-y; //static method
    };
    function mul(x,y){
        return x*y; //static method
    }
    calculation.mul=mul;
}

声明此方法后,如果像这样的calculation.mul(2,1)调用,则会收到类似的错误。



但是,在创建实例后使用var _calc=new calculation();,我可以访问静态方法。
calculation.mul(2,1) if i try after this, i am getting value `2`.

有人请澄清一下谢谢,提前。

最佳答案

因为将mul属性分配给calculation对象的代码:



…在calculation函数内部。因此,它仅在调用calculation函数时运行。

如果您不希望它那样工作,请将其移到外面。

function calculation() {
  this.add = function(x, y) {
    return x + y;
  }
  calculation.sub = function(x, y) {
    return x - y; //static method
  };
}

function mul(x, y) {
  return x * y; //static method
}
calculation.mul = mul;

console.log(calculation.mul(2, 1))

09-15 18:54