在javascript对象中定义的数组

时间:2017-12-05 04:44:42

标签: javascript arrays

我的问题是关于Javascript对象中包含的数组:

我的程序有许多想要成为"脉冲"靠着窗户。我只是创建一个遍历对象数组的对象,而不是在每个对象中创建一个setInterval,而不是#34; client"并且每个脉冲 - 每个都必须实现一个名为" pulse" - 标准的发布和订阅/监听模式的东西。

以下是有效的代码:

var clients = [];

function Power() {}

Power.prototype.plugIn = function (someObject) {
    clients[clients.length] = someObject;
    if (!this.interval) {
        this.interval = setInterval(this.pulseClients, 13);
    }
};

Power.prototype.pulseClients = function () {
    var i;
    for (i = 0; i < clients.length; i += 1) {
         clients[i].pulse();
    }
};

请注意,我必须定义我的对象的数组,客户端,OUTSIDE。对于封装,我更喜欢这个:

function Power() {
    this.clients = [];
}

Power.prototype.plugIn = function (someObject) {
     this.clients[this.clients.length] = someObject;
     if (!this.interval) {
        this.interval = setInterval(this.pulseClients, 13);
    }
};

Power.prototype.pulseClients = function () {
    var i;
    for (i = 0; i < this.clients.length; i += 1) {
         this.clients[i].pulse();
    }
};

然而,当我这样做时,我的客户对象不会发出脉冲。从语法上讲,它似乎与我在网上看到的对象中的数组示例一致。 firefox调试器指示this.clients是未定义的,并且我的this变量不再引用Power对象,而是在执行此操作时引用Window对象。我错过了一些明显的东西吗

0 个答案:

没有答案