在 javascript 中声明函数的方法有很多种。 其中一种方法是在其中声明一个类和一个静态函数,如下所示。
class className {
static fucntionName() {
}
}
另一种声明方式是通过传统的 javascript 样式,如下所示。
function functionName() {
}
我想知道使用这两种情况的优点/缺点。 静态方法是否有任何特定的用例,为什么要声明一个类(我们知道在javascript中不需要实例化类来访问静态函数)。 为什么不在所有/任何用例中使用传统的函数声明方式(上例中的第二种情况)?
我想详细了解一下。
最佳答案
如您所知,static
方法可从类本身调用。
非static
方法可从类的实例 调用,因此您基本上必须先创建一个对象才能访问该方法。
例如,对于 返回 a+b
的 addNumbers(var a, var b)
,是否真的有必要浪费内存来实例化该类的对象只是为了添加这两个数字?不,您只需要结果,这就是静态的全部意义。
使用第一种样式允许您将方法分组到特定类中(想想命名空间之类的东西)。也许您可以定义像 Math
和 String
这样的类,它们都有 add
方法,但实现方式不同。单独调用 add()
会令人困惑,但 Math.add()
和 String.add()
不会。
export
风格,另一方面,做了完全不同的事情。它允许您使用来自另一个模块的功能。
想想这个:
first_module.js
function cube(var x) {
return x * x * x;
}
second_module.js
import { cube } from 'first_module'; // <-- ERROR
alert( cube(3) ); // <-- Undefined function
但是,如果您这样声明 first_module:
export function cube(var x) {
return x * x * x;
}
然后 second_module 就可以正常工作了。
关于javascript - Javascript 中静态函数声明和普通函数声明的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45594196/