Javascript 静态方法与性能上的原型(prototype)/实例化方法

标签 javascript static-methods prototypal-inheritance

我一直在尝试在 Javascript 中使用静态方法。我没有让对象从原型(prototype)继承,而是更加努力地使用鸭子类型。

var Controller = {};
Controller.getData = function() {//return data};

// and then in use:
var page = route.getPage();
require([page], function(Controller) {
    Controller.getData();
});

我可以通过使用 Controller 原型(prototype)创建新对象来实现同样的目的:

function Controller() {};
Controller.prototype.getData = function() {//return data};

// and then in use:
var page = route.getPage();
require([page], function(Controller) {
    var controller = new Controller();
    controller.getData();
});

我的直觉是静态方法会更快,但我没有头绪。总的来说,这两种方法之间的性能差异是什么?

TLDR;基本上 this问题,但对于 Javascript。

最佳答案

编辑:因此,当您实例化类与调用“静态”版本时在性能上存在一点差异,但这种差异并不能真正保证您对类进行任何更改代码(过早优化),除非您看到实际速度变慢。

如基本 jsperf 中所示测试我设置,在性能方面确实没有太大区别。您应该根据是否希望上下文 (this) 引用您的基类来做出决定。

关于Javascript 静态方法与性能上的原型(prototype)/实例化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403241/

相关文章:

javascript - data-th JS 每页只工作一次

javascript - Meteor - 设置登录用户

检查 C 中的单元测试 : Best way to test static methods

javascript - 注释中的装饰器对代码有影响吗?

javascript - 在嵌入式 map /谷歌地图 API 上使用标准谷歌地图接口(interface)

使用 "this = "的 Javascript 函数给出 "Invalid left-hand side in assignment"

forms - 如何通过扩展基类表单使用 ES6 动态制作此表单?

javascript - 设计 : why does JavaScript have separate Function and Object objects, 以及为什么它们有自己单独的原型(prototype)对象?

c++ - 类的静态函数和类的构造函数是什么关系?

angular - typescript - 继承静态属性没有静态关键字