【问题标题】:Static methods in JavaScriptJavaScript 中的静态方法
【发布时间】:2015-02-09 22:57:46
【问题描述】:

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

var ClassFoo = Class.create();
ClassFoo.prototype = {
        initialize: function() {

        },
        type: 'ClassFoo'
};

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

  1. 是否和java中创建静态方法一样/等价?

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

【问题讨论】:

    标签: javascript static prototype


    【解决方案1】:

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

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

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

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

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

    ClassFoo.doBar();
    

    【讨论】:

    • java中的静态方法可以被实例访问。那在 Javascript 中不一样吗?请确认?
    • classfoo的实例可以访问doBar()吗?
    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 2011-12-03
    • 2012-06-21
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多