我有一个问题需要解决我的Javascript代码。在实例化对象时(在这种情况下添加新成员),我希望成员获得唯一ID。下面是我的代码的简化版本,为您提供我想要的图片。这样做的最佳方式是什么?
function Member(name){
//unique id code...
this.getName = function(){
return name;
}
this.setName = function(_name){
name = _name;
}
}
答案 0 :(得分:2)
我想它很简单:
(function() {
var idcounter = 0;
function Member(name){
this.id = idcounter++;
this.getName = function(){
return lastName;
};
this.setName = function(_name){
name = _name;
};
}
yournamespace.Member = Member;
}());
yournamespace 应该是您的应用程序对象或其他任何内容。您还可以在浏览器中将其替换为window
,以使Member
构造函数为全局。
答案 1 :(得分:0)
如果您只想要(可能)唯一ID,则可以使用
var id = new Date().getTime();
返回自纪元(1970年1月1日)以来的毫秒数。
编辑:我想我从未在javascript应用程序中遇到过以下评论中描述的极端情况,但在这些情况下,这肯定是一个糟糕的解决方案。
答案 2 :(得分:0)
使用立即调用的函数表达式(IIFE)为函数创建作用域。在此范围内,您可以定义计数器变量。只要uniqueId存在,该范围就会在整个运行时保留。只有返回的函数才能访问范围。每次调用uniqueId函数时,它都会向范围中的计数器添加+1并返回值。
var uniqueId = (() => {
var counter = 0
return function() {
return counter++
}
})()
console.log(uniqueId())
console.log(uniqueId())
console.log(uniqueId())
提示:lodash也有uniqueId函数。