实例化对象时设置唯一ID(带构造函数)

时间:2011-11-27 20:54:03

标签: javascript object unique-index

我有一个问题需要解决我的Javascript代码。在实例化对象时(在这种情况下添加新成员),我希望成员获得唯一ID。下面是我的代码的简化版本,为您提供我想要的图片。这样做的最佳方式是什么?

function Member(name){

    //unique id code...

    this.getName = function(){
        return name;
    }

    this.setName = function(_name){
        name = _name;
    }
}

3 个答案:

答案 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函数。