【发布时间】:2013-06-26 17:30:50
【问题描述】:
我有一个功能可以生成用于测试的 guid:
helpers.guid = function(){
var guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
return guid;
};
我称之为:
var thisTest.guid1 = helpers.guid();
var thisTest.guid2 = helpers.guid();
问题是每次我引用 thisTest.guid1 时它都是不同的 guid。我需要将对象属性设置为永久值,但我不知道该怎么做。我尝试添加一个闭包,但无法让它工作。
编辑:澄清一下,我需要能够生成多个 guid 并将每个 guid 分配给不同的变量。现在,每次我引用一个变量时,我都会得到一个新的 guid,因为它可能会再次调用该函数并返回一个新值。我需要每次使用“guid1”和“guid2”都是相同的值。
【问题讨论】:
-
可能是这样的:jsfiddle.net/RGu4p
-
或者可能“更好”:jsfiddle.net/RGu4p/1。此示例仅在第一次需要时生成 guid。我的第一个示例立即执行并永久保持该值
-
"var thisTest.guid = helpers.guid();"抛出错误。我复制粘贴了你的代码,修复了 thisTest 变量,没有你描述的问题,thisTest.guid 实际上是一个字符串,而不是一个函数jsfiddle.net/VV3rN
-
我希望你明白这实际上不是一个真正的 GUID...
-
thisTest.guid上面 not 引用了一个函数。它引用函数的返回值。
标签: javascript