为了账号安全,请及时绑定邮箱和手机立即绑定

函数中的数组?

函数中的数组?

翻阅古今 2019-03-20 17:13:05
昨天在实现根据数据自动生成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: '王五'}

    ];

}


查看完整回答
反对 回复 2019-03-23
?
米脂

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属性是应该为[]啊


查看完整回答
反对 回复 2019-03-23
  • 2 回答
  • 0 关注
  • 399 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信