Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:将对象推送到集合中_Javascript - Fatal编程技术网

Javascript:将对象推送到集合中

Javascript:将对象推送到集合中,javascript,Javascript,我有一个Msg对象和一个MsgCollection对象 消息对象: function Msg(text, timestamp, source, thread_id) { Msg.RECEIVED = 1; Msg.SENT = 2; this.thread_id = thread_id; this.text = text; this.timestamp = timestamp; this.source = source; } MsgCollec

我有一个Msg对象和一个
MsgCollection
对象

消息对象:

function Msg(text, timestamp, source, thread_id) {
    Msg.RECEIVED = 1;
    Msg.SENT = 2;

    this.thread_id = thread_id;
    this.text = text;
    this.timestamp = timestamp;
    this.source = source;
}
MsgCollection对象:

function MsgCollection() {
    this.all = [];
}
MsgCollection.prototype.push = function(msg) {
    this.all.push(msg);
    console.log("first message text: " + this.all[0].text);
}
在下面的代码中,我获取result对象并将所有数据放入一个临时Msg对象,然后将其推送到
MsgCollection

var msgColl = new MsgCollection();
for (var i = 0; i < result.texts.length; i++) {
    var tempMsg = new Msg;
    tempMsg.thread_id = result.texts[i].thread_id;
    tempMsg.text = result.texts[i].message;
    tempMsg.timestamp =  Number(result.texts[i].time_received);
    tempMsg.source = result.texts[i].type;

    msgColl.push(tempMsg);
}
var msgColl=new MsgCollection();
对于(变量i=0;i
不幸的是,当我尝试在push方法中打印出
this.all[0].text
时,执行似乎停止了。换句话说,似乎没有任何内容被推入
msgCollection
对象。也许这有点复杂,但也许我可以得到一些关于如何调试的指导

谢谢

tempMsg.timestamp = new Number(result.texts[i].time_received);  
效果很好

请尝试以下代码:

for (var i = 0; i < result.texts.length; i++) {
    var tempMsg = new Msg();
    tempMsg.thread_id = result.texts[i].thread_id;
    tempMsg.text = result.texts[i].message;
    tempMsg.timestamp = new Number(result.texts[i].time_received);
    tempMsg.source = result.texts[i].type;

    msgColl.push(tempMsg);
}

我想这对你有帮助

当您输出
this.all[0]
时,控制台中会显示什么?
var tempMsg=new Msg()
@Ilya:没什么区别,好吧……看起来不错,浏览器控制台有任何错误。你说得对,一切都正常。我的代码中还有一些东西搞乱了。无论如何,谢谢你。
for (var i = 0; i < result.texts.length; i++) {
    var tempMsg = new Msg();
    tempMsg.thread_id = result.texts[i].thread_id;
    tempMsg.text = result.texts[i].message;
    tempMsg.timestamp = new Number(result.texts[i].time_received);
    tempMsg.source = result.texts[i].type;

    msgColl.push(tempMsg);
}
try {
   //Your code goes here..
   alert(Obj); //You can Inspect an object here..
}
catch(e) {
    //If any error you will inspect here..
    alert(e); 
}