JavaScript 中的静态方法

Static methods in JavaScript

如果我在 prototype.js

中声明了 class
var ClassFoo = Class.create();
ClassFoo.prototype = {
        initialize: function() {

        },
        type: 'ClassFoo'
};

如果我声明一个方法 ClassFoo.doBar = function() { log("foobar") }

  1. 在java中创建静态方法是否相同as/equivalent?

  2. classfoo 的对象可以访问 doBar() 吗?

是的,构造函数中的方法类似于其他 OOP 语言中的静态方法。它们在全局范围内可用(或在定义构造函数的任何范围内)并且不与该对象的任何特定实例相关联(这几乎就是静态方法)。

项目中任何位置的任何代码都可以作为 ClassFoo.doBar() 访问它们。您的 ClassFoo 方法也可以通过这种方式访问​​它。没有其他访问它们的快捷方式(即使是从方法)。

要记住的一件事是 Javascript 中的函数是对象,并且可以像 Javascript 中的任何其他对象一样具有属性。所以,分配:

ClassFoo.doBar = function() {...};

只是将 属性 分配给 ClassFoo 对象,它可以像 属性 一样用于任何对象。

ClassFoo.doBar();