我正在创建一个如下所示的函数
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;
}
Run Code Online (Sandbox Code Playgroud)
在声明这个方法之后,如果这样调用calculation.mul(2,1)我会收到类似的错误.
VM3676:1未捕获的TypeError:calculation.mul不是函数:1:13
但是,var _calc=new calculation();在创建实例后,我可以访问静态方法.
calculation.mul(2,1) if i try after this, i am getting value `2`.
Run Code Online (Sandbox Code Playgroud)
任何人,请澄清我.谢谢,提前.
因为将mul属性分配给calculation对象的代码:
Run Code Online (Sandbox Code Playgroud)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))Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |