gpt4 book ai didi

javascript多个对象实例相同的时间戳

转载 作者:行者123 更新时间:2023-11-30 17:45:26 24 4
gpt4 key购买 nike

我很好奇为什么这会为每个返回相同的时间戳。我认为该对象应该具有不同的标识符。?

/js/helpers/v01.js

var Tester = (function () {
var object_id = 'Tester';
var object_id_unique = (new Date().getTime()) + '-' + (new Date().getMilliseconds());
var _this;

/**
*
* @constructor
*/
function Tester(obj_name) {
this.name = obj_name;
this.run();
}

Tester.prototype = {

run: function () {
"use strict";
var $body = document.getElementsByTagName('body')[0];
var $node = document.createElement('div');
$node.innerHTML = '<lable>' + this.name + ': </lable>' + ' ' + object_id + '-' + object_id_unique;
$body.appendChild($node);
}
};
return Tester;
})();

这是页面

<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="/js/helpers/v01.js"></script>
</head>
<body>

<script type="text/javascript">
new Tester('A');
setTimeout(function () {
new Tester('B');
}, 500);
</script>
</body>
</html>

我的输出返回这个

A: Tester-1385613846838-838
B: Tester-1385613846838-838

最佳答案

在您的闭包中,您将永久设置 object_id_unique 的值(因为该函数在定义时立即被调用,而不是在您调用返回的 函数时)- 移动它在返回的函数中。这应该修复它:

var Tester = (function () {
var object_id = 'Tester';
var _this;

/**
*
* @constructor
*/
function Tester(obj_name) {
this.name = obj_name;
this.run();
}

Tester.prototype = {

run: function () {
"use strict";
var object_id_unique = (new Date().getTime()) + '-' + (new Date().getMilliseconds());
var $body = document.getElementsByTagName('body')[0];
var $node = document.createElement('div');
$node.innerHTML = '<lable>' + this.name + ': </lable>' + ' ' + object_id + '-' + object_id_unique;
$body.appendChild($node);
}
};
return Tester;
})();

关于javascript多个对象实例相同的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com