我有这个代码,当我点击“添加”时,它会向数组中添加一个新人。然后当我点击“点击”按钮时它应该改变数组中该人的属性,并在setInterval()计时器中使用这些新属性(特别是' interval'),即' person.hours'。
我希望这样做,因为我需要为每个人单独做这件事。
我需要添加代码的主要内容如下。
//restart interval here with new interval
//so re-run personArray[0].hours with the new personArray[0].interval
但我不确定如何使用对象更新属性重新启动间隔。
var personArray = [];
function person(name, age, workhours, interval) {
this.name = name;
this.age = age;
this.workhours = workhours;
this.interval = interval;
this.hours = setInterval(function() {
console.log('hello')
}, interval);
}
person.prototype.update = function() {
clearInterval(this.hours);
this.hours = setInterval(function() {
console.log('newhello');
//i want to log the persons name here
console.log(this.name)
}, this.interval);
}
$('#add').click(function() {
personArray.push(new person('fred', 15, 20, 500))
});
$('#click').click(function() {
console.log(personArray[0]);
clearInterval(personArray[0].hours);
personArray[0].interval = 100;
personArray[0].update();
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='add'>
add
</button>
<button id='click'>
click me
</button>
&#13;
这也是一个小提琴:http://jsfiddle.net/reko91/nVyXS/1726/
可以让事情更容易测试,提前谢谢:)
答案 0 :(得分:2)
我不确定你想要实现的目标,但我相信你必须用新的间隔替换“// restart interval” 有类似的东西:
personArray[0].hours = setInterval(function() {
console.log('hello')
}, personArray[0].interval);
您的代码只会影响数组中的第一个人,但我想您知道;)