您好我已经使用此模式获取静态变量
var uniqueID = (function() {
var id = 0; // This is the private persistent value
// The outer function returns a nested function that has access
// to the persistent value. It is this nested function we're storing
// in the variable uniqueID above.
return function() { return id++; }; // Return and increment
})(); // Invoke the outer function after defining it.
现在我正在尝试克隆此功能,但备份和原始仍然返回顺序值。如何在复制时“冻结”该功能的状态?
由于
答案 0 :(得分:2)
好的,像这个极其复杂的装置应该有用(小提琴,http://jsfiddle.net/dPLj6/):
var uniqueIdFunction = function(initialValue) {
var id = initialValue || 0;
var result = function() { return id++; };
result.clone = function(){ return uniqueIdFunction(id); }
return result;
};
var uniqueId1 = uniqueIdFunction();
使用clone方法获取克隆。原始文件将保留其自己的内部id值。克隆将从克隆源获取其初始内部标识。
答案 1 :(得分:0)
这是一个生成唯一id生成器的函数:
var createGenerator = function(id) {
var id = id || 0;
return function() { return id++; };
}
var g1 = createGenerator();
var g2 = createGenerator();
console.log(g1(), g1(), g1());
console.log(g2(), g2());
console.log(g1());
console.log(g2());
// OP's cloning scenario
var freezeId = g1();
var clone = createGeenrator(freezeId);
console.log(g1(),g1());
console.log(clone());
@ pax162的答案更符合OP想要做的事情。我只是决定发布更正常的做法。