javascript - 类上的方法 - 静态成员

标签 javascript oop

这是构造函数:

function Foo() {
    this.id = 0;
}

我在这里创建“类”方法:

Foo.id = function() {
    return id form Product + 1; // pseudocode
}

Foo.id() // 1 
Foo.id() // 2

好吧,我想在构造函数上调用方法 id() 而不创建 Foo 的实例,其中 id() 方法访问公共(public)成员 id 并将其设置为 id + 1。另外,当我创建实例时,调用 id 方法创建它并设置 id 成员。首先是对我来说关闭。任何帮助以及进一步阅读的链接将不胜感激。

稍后我将创建 Foo 的实例,这是模板:

var myFoo = new Foo({
    title: "titlevalue", // string
    price: n // ni is integer
});

我希望每个实例也有 id 属性,该属性是在实例化时生成的,因为构造函数中有默认属性 id。

最佳答案

函数是一个对象。在您的函数上添加第二个属性。

Foo.currentId = 0;

Foo.id = function() {
    return ++Foo.currentId;
};

如果您坚持将其设置为“私有(private)”,您可以在函数内创建一个函数:

Foo.id = (function() {
    var id = 0;

    return function() {
        return ++id;
    };
})();

关于javascript - 类上的方法 - 静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19392243/

相关文章:

c# - 带有抽象的装饰器,不能正确获取装饰值

python - 扩展类不能被pickle

c++ - 试图理解适用于我的代码的 Demeter 法则

oop - 来自采访的车辆配置信息亭的面向对象设计

javascript - Angular 模型不随空间更新

javascript - 加载多个 CSV 并将它们分别存储在一个单独的数组中

javascript - 在 JavaScript 中比较两个日期,但没有按我的预期工作

oop - 似乎无法理解SOLID原理和设计模式

javascript - 用户名和密码验证始终返回 true (使用 firebase)

javascript - 如何编写不带参数的类型化操作