何を達成したいですか?
Looperというクラスがあります。各オブジェクトに名前と独自のルーパーを付けたいと思います。
期待する結果
Created Looper Object...
one
Created Looper Object...
two
one - 1
two - 1
one - 2
two - 2
one - 3
two - 3
one - 4
two - 4
one - 5
two - 5
.......
私のコード
このコードで、私はそれが動作することを期待しています..
var Looper = (function (window, document, $) {
this.i = 1;
var Looper = function () {
console.log('Created Looper Object...');
}
var getName = function () {
return this.name;
}
var setName = function (newName) {
this.name = newName;
}
var loop = function () {
console.log(getName() + ' - ' + this.i);
this.i = this.i + 1;
}
var startLoop = function () {
window.setInterval(loop, 1000);
}
Looper.prototype = {
getName: getName,
setName: setName,
start: startLoop
}
return Looper;
})(window, document, jQuery);
var one = new Looper();
one.setName('one');
console.log(one.getName());
one.start();
var two = new Looper();
two.setName('two');
console.log(two.getName());
two.start();
jsFiddle の例
私の結果
しかし、そうではありません....
Created Looper Object...
one
Created Looper Object...
two
result - 1
result - 2
result - 3
result - 4
result - 5
.......
誰かがなぜそうしないのか教えてもらえますか?
私の問題は、this.name
オブジェクトごとに設定できることです。
しかしthis.i
、オブジェクトごとに設定することはできません。彼らはお互いを追い越しますi
。静的のように見えthis.i
ますか?!?!?
また、使用するconsole.log(two.getName());
と機能します。しかし、ループ内this.name
はresult
?