亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數中的數組?

函數中的數組?

翻閱古今 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 關注
  • 421 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號