昨天在实现根据数据自动生成tr的时候遇到一个问题。我在html页面定义了一个tasks数组,然后在js处理这个数组,但是在遍历的时候发现没有数据,是怎么回事?html页面var ge = new Generator();var tasks = [ {id: 1, name: '张三'}, {id: 2, name: '李四'}, {id: 3, name: '王五'}];ge.loadTasks(tasks);function Generator() { this.tasks = [];}Generator.prototype.loadTasks = function(tasks) { var self = this; for(var i = 0; len = tasks.length, i < len; i++) { self.tasks.push(tasks[i]); }}未展开展开这里打印Generator这个函数的时候发现this.tasks的长度是0,但是展开this.tasks的时候发现里面又有值,这个是怎么回事啊?因为task这个数组希望能在Generator其他定义的方法中使用,大佬们帮我看看吧
2 回答
FFIVE
TA贡献1797条经验 获得超6个赞
tasks长度不一致应该是打印、赋值顺序的问题
console.log(ge);
ge.loadTasks(tasks);
另外,你上述代码调用ge.loadTasks(tasks);,被赋值的只是ge实例的tasks,构造函数Generator的tasks还是[]。
如果想让Generator构造函数所创建的对象拥有tasks值,应该将tasks列表放到构造函数里
function Generator() {
this.tasks = [
{id: 1, name: '张三'}, {id: 2, name: '李四'}, {id: 3, name: '王五'}
];
}
米脂
TA贡献1836条经验 获得超3个赞
你的代码和调试都有逻辑问题的
Generator.prototype.loadTasks = function(tasks) {
var self = this;
for(var i = 0; len = tasks.length, i < len; i++) {
self.tasks.push(tasks[i]);
}
}
后面如果没有在实例中调用loadTasks方法(且实参是全局的tasks变量),则tasks属性是应该为[]啊
添加回答
举报
0/150
提交
取消