JavaScript中的静态方法

Static methods in JavaScript

本文关键字:静态方法 JavaScript      更新时间:2023-09-26

如果我有一个在prototype.js 中声明的类

var ClassFoo = Class.create();
ClassFoo.prototype = {
        initialize: function() {
        },
        type: 'ClassFoo'
};

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

  1. 它与在java中创建静态方法相同/等效吗?

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

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

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

需要记住的一点是,Javascript中的函数是对象,可以像Javascript中任何其他对象一样具有属性。因此,分配:

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

只是为ClassFoo对象分配一个属性,它可以像任何对象上的任何属性一样使用。

ClassFoo.doBar();