0

这是构造函数:

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

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

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

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

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

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

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

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

4

1 回答 1

2

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

Foo.currentId = 0;

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

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

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

    return function() {
        return ++id;
    };
})();
于 2013-10-15T22:46:03.217 回答