自动递增对象id JS构造函数(静态方法和变量)
Incrementing object id automatically JS constructor (static method and variable)
我是JavaScript新手,我有一个想法,创建类(函数),我知道它在JS(原型等)中是如何工作的,但我需要做一些事情,比如在数据库中增加Id。
我的想法是创建静态方法,我认为闭包非常适合这里,无论何时创建新对象,它都应该返回递增的id。
我不知道什么是实现这一点的正确方法,或者这可能是一种糟糕的做法。
请提供一个简单的例子。
关闭是个好主意:
var MyClass = (function() {
var nextId = 1;
return function MyClass(name) {
this.name = name;
this.id = nextId++;
}
})();
var obj1 = new MyClass('joe'); //{name: "joe", id: 1}
var obj2 = new MyClass('doe'); //{name: "doe", id: 2}
或者,如果你想要一些更灵活的解决方案,你可以创建一个简单的工厂:
function MyObjectFactory(initialId) {
this.nextId = initialId || 1;
}
MyObjectFactory.prototype.createObject = function(name) {
return {name: name, id: this.nextId++}
}
var myFactory = new MyObjectFactory(9);
var obj1 = myFactory.createObject('joe'); //{name: 'joe', id: 9}
var obj2 = myFactory.createObject('doe'); //{name: 'doe', id: 10}
```
由于节点是单线程的,所以这应该很容易而且相对安全。
我认为你可以通过创建一个全局变量来实现这一点
global.counter = 0
然后在构造时,您的类可以对其进行增量,或者如果您需要在创建类时保留对该值的引用,则可以增量并获取该值。
function YourClass() {
global.counter++;
}
var yc = new YourClass(); // global.counter 1
var yc2 = new YourClass(); // global.counter 2
相关文章:
- 无法理解JavaScript中的静态方法
- 从构造函数es6调用静态方法
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- Javascript:如何声明非全局静态方法
- 定义的静态方法未定义
- 使用 Babel 转译器导入类并调用带有 ES6 模块的静态方法
- 面向对象的 JavaScript 共享方法变量
- 从常规ES6类方法中调用静态方法
- React中的静态方法
- React中的单元测试非静态方法
- JavaScript中的静态方法
- 可以't从客户端应用程序引用插件中定义的静态方法
- 静态方法中的Javascript“this”
- 如何在 ReactJS 中限制静态方法
- Javascript 静态方法继承
- 猫鼬静态方法返回蓝鸟承诺
- 如何继承静态方法
- 如何获取 javascript 类中的静态方法列表
- 如何在 javascript 中定义静态方法类
- 自动递增对象id JS构造函数(静态方法和变量)