将javascript函数的guid作为值而非引用传递的最佳方式
Best way to pass a guid from a javascript function as a value not a reference?
我有一个生成测试指南的函数:
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"answers"guid2"在每次使用时都是相同的值。
问题标题比不必要的复杂代码示例和文本要简单得多。。。让我们使用更简单的代码。
var seed = 1 ;
function generate () {
return seed++ ;
}
var a = generate() ;
alert(a + "'n" + a + "'n" + a ) ;
这当然显示了"1"三次。。。不管它是对象属性还是变量,它都会。函数的返回值被保存在内存中,因为它被变量a引用。对象属性的行为当然是一样的:
var a = { b : generate() };
alert( a.b + "'n" + a.b + "'n" + a.b ) ;
这将再次显示"1"三次。同样,每次调用generate()都会产生新的值。
var a = {b:generate(), c:generate(), d:generate() };
alert( a.b + "'n" + a.c + "'n" + a.d ) ;
这将输出"1"、"2"answers"3"。对函数的每次调用都返回一个值,该值由不同的对象属性引用,因此我们有三个不同的值。
如果我理解正确,你可以使用两个函数:
1-生成GUID并将其存储在某个位置的函数,如在你表单的某个隐藏控件中,这样你就可以稍后获得
2-一个检索隐藏控件值的函数。
相关文章:
- 引用对象中的通用值
- 如何在JavaScript中将字符串转换为函数引用
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 在动态创建的元素上获取对特定选择器的引用
- IIFE中的函数引用不可用
- 如何通过引用var Using DataTables来进行分页或排序
- 如何在创建键时引用来自同一对象的键
- 在没有ajax的情况下将多个变量传递到引用页面的最佳方式
- 在方法中的函数中引用 CoffeeScript 类中的“this”的最佳方式是什么?
- 哪种方法代表了 JavaScript 中空对象引用的最佳实践,null 或未定义
- 引用JSON树结构的分支的最佳方法是什么
- 在UserControl(ascx)中引用javascript的最佳方式
- YUI库-保持对对象的全局引用的最佳方式
- 将javascript函数的guid作为值而非引用传递的最佳方式
- 使用反向引用的最佳方式是什么?
- 在Backbone中保存对全局集合的引用的最佳模式
- 在原型设计时跟踪javascript对象引用的最佳方法是什么?
- Javascript引用img url:最佳实践
- HTML5 web应用的最佳实践是:使用getElementByID或存储引用
- 在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么