与此之间的绩效有何不同:
版本1:
export default class User {
static getList(data) {
...
}
static getItem(data) {
...
}
}
和此:
版本2:
export default {
getList(data) {
...
},
getItem(data) {
}
...
}
两者都是直接调用的:
import User from "./User";
User.getList(data); // by static method (version 1)
User.getList(data); // by object property method (version 2)
那么差异在哪里呢?
答案 0 :(得分:2)
静态方法只是构造函数对象的属性。所以区别在于,在第一种情况下,您正在创建一个函数对象(构造函数),在第二种情况下,您正在创建一个“普通”对象。即简化为:
var firstExample = Object.assign(function() {}, {
getList() {},
getItem() {},
});
var secondExample = Object.assign({}, {
getList() {},
getItem() {},
});
您应该使用能够明确代码意图的内容。如果你永远不会真正实例化User
那么你就不应该使用一个类。
静态方法(“版本1”)是否只创建一次而另一个对象(“版本2”)每次被调用时都会被克隆(?)?
没有。在这两种情况下,方法只创建一次。
该类是否具有对象不具有的开销?
可能。创建“类”涉及比创建对象更多的步骤。但是,这不会对您的应用程序产生任何真正的影响。