对象创建时javascript类id计数
目前这个结果是2和2,因为这两个对象都访问同一个全局变量。但是我怎么能在创建对象时拥有一个向上计数的id,这样我的id为1和2,依此类推对象创建时javascript类id计数,javascript,Javascript,目前这个结果是2和2,因为这两个对象都访问同一个全局变量。但是我怎么能在创建对象时拥有一个向上计数的id,这样我的id为1和2,依此类推 <script type="text/javascript"> var id =0; class theObject{ constructor(){ this.id=id++; } writeOutput(){ console.log("
<script type="text/javascript">
var id =0;
class theObject{
constructor(){
this.id=id++;
}
writeOutput(){
console.log("write output");
$('<span>').appendTo('#output').html("id:"+id);
}
}
var theObject1 = new theObject();
var theObject2 = new theObject();
$(document).ready(function(){
theObject1.writeOutput();
theObject2.writeOutput();
})
</script>
<body>
<div id="output"></div>
</body>
</html>
您正在writeOutput中使用全局id。相反,您希望实例属性this.id:
var-id=0;
类对象{
建造师{
this.id=id++;
}
写输出{
console.logwrite输出;
$.appendTo'output'.htmlid:+this.id;
}
}
var theObject 1=新theObject;
var theObject 2=新theObject;
$document.readyfunction{
对象1.writeOutput;
对象2.writeOutput;
}
你把类变量和全局变量混淆了。请注意,在构造函数中设置this.id的值,但在writeOutput中显示的是id的值,而不是this.id。id是全局变量,不是类的一部分。它旨在跟踪计数,但不是类的每个实例的存储值 要实现您的目标,您的写入输出方法应如下所示:
writeOutput()
{
console.log("write output");
$('<span>').appendTo('#output').html("id:"+this.id);
}
反对使用globals的投票。回答得好,@T.J。
writeOutput()
{
console.log("write output");
$('<span>').appendTo('#output').html("id:"+this.id);
}