我有一個函數產生的GUID來進行測試:從javascript函數傳遞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」在每次使用時都是相同的值。
也許是這樣的:http://jsfiddle.net/RGu4p/ – Ian
或者可能是 「更好」:http://jsfiddle.net/RGu4p/1/。這個例子只在第一次需要時纔會生成guid。我的第一示例立即執行並保持該值永遠 – Ian
「變種thisTest.guid = helpers.guid();」拋出錯誤。我複製粘貼你的代碼,固定這項測試變量並沒有象你所說的沒有問題,thisTest.guid實際上是一個字符串,而不是功能http://jsfiddle.net/VV3rN/ – Alexey