提问人:stepaks675 提问时间:7/1/2023 最后编辑:Bergistepaks675 更新时间:7/2/2023 访问量:67
类内的静态方法和类外的函数有什么区别 (JavaScript)
What's the difference between static method inside a class and a function outside of it (JavaScript)
问:
我真的不明白将静态方法放入类中然后使用此类调用它而不是仅使用相同代码创建函数的目的是什么。
class test {
static sum(a,b){
return (a+b)
}
}
sum = (a,b) => a+b
console.log(sum(10,5)) //15
console.log(test.sum(10,5)) //15
有何不同?为什么人们使用静态类?
答:
2赞
deceze
7/2/2023
#1
独立函数和类上的静态方法之间确实没有真正的技术区别。如果没有差异,则不应不必要地将函数包装在类中。
但是,它可能有利于可理解性。例如,builtin 类有一些静态方法,如 Date.now
。这显然是有意义的,因为它非常相关。如果它不是 上的静态方法,它将是一个全局函数,它需要被命名为有用的东西,并且不应该与其他全局名称冲突。仅仅命名它可能会占用一个有价值的全球名称,并导致混乱或冲突。比较:Date
Date
Date
Date
now
let foo = now();
let bar = Date.now();
Date.now
这里更清楚,也没有占用另一个全球名称。
现在(双关语),ES6 模块在某种程度上解决了这个问题,因为它为您提供了另一个对相关功能进行分组的工具:模块。使用模块,您可以简单地从模块中导出一个独立的函数和一个单独的类,调用者可以随心所欲地使用它:
import { now, Date } from 'hypothetical-date';
let foo = now();
let bar = new Date;
// or
import hdate from 'hypothetical-date';
let foo = hdate.now();
let bar = new hdate.Date;
评论