我正在创建一个如下所示的函数
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)
我会收到类似这样的错误。
VM3676:1 Uncaught TypeError: calculation.mul is not a function at :1:13
但是,var _calc=new calculation();
创建实例后,我可以访问静态方法。
calculation.mul(2,1) if i try after this, i am getting value `2`.
任何人,请澄清我。谢谢,提前。
最佳答案
因为将 mul
属性分配给 calculation
对象的代码:
calculation.mul=mul;
… 在 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))
关于javascript - 为什么 javascript 静态变量在不创建最少一个实例的情况下无法访问(使用类名)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790651/