Javascript:Object变量是空的,即使在我分配了它之后,在Object的内部和外部都是空的

Javascript:Object变量是空的,即使在我分配了它之后,在Object的内部和外部都是空的,javascript,arrays,Javascript,Arrays,我面临以下问题,当我尝试在javascript中使用对象时,在对象内部分配值时遇到问题。这里特别是this.sItem[i]和oInvoice.sItem[i],它们总是未定义 var oInvoice = { sID: "", sDate: "", iNumberOfItems: oSpreadSheetApp.hInvoiceSheet.getRange(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell(

我面临以下问题,当我尝试在javascript中使用对象时,在对象内部分配值时遇到问题。这里特别是this.sItem[i]和oInvoice.sItem[i],它们总是未定义

var oInvoice = {
sID: "",
sDate: "",
iNumberOfItems: oSpreadSheetApp.hInvoiceSheet.getRange(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell().getRow(), 2, 1, 1).getValues()[0],
sItem: "",
iRate: "",
iWork: "",
iCalculatedAmount: "",  
sBody: "",
sComment: "",

/* Get the actual data inside range */ 
/* Fetch values for each row in the Range. */
mProcessInvoice: function () {
    var rDataRange = oSpreadSheetApp.hInvoiceSheet.getRange(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell().getRow(), 1, 1, 11);
    var dData = rDataRange.getValues();
    var i = 0;

    /* Read values */ 
    for (i in dData) {
        var rCurrentRow = dData[i]; /* Current row contains values from spreadsheet */

        /* Both this.sItem[i] and oInvoice.sItem[i] are empty */ 
        this.sItem[i] = rCurrentRow[4];
        oInvoice.sItem[i] = rCurrentRow[4];

    }       
}
};

Logger.log(oInvoice.sItem[1]);
我很确定我在这里没有得到一个基本的概念,但我很高兴地期待得到启发。

有几个问题

  • sItem声明为字符串,请将其声明为数组
  • 使用push方法代替[i],is saffer
  • “this”将引用运行代码的函数,而不是对象。使用prototype.functionName=function(){}来声明方法,或者不要使用this,或者使用(不推荐,但只是告诉您)
  • 如果您想连接字符串,只需使用+=运算符

    var a = '';
    a += 'Hello'
    console.log(a); //"Hello"
    

    sItem=[]是初始化阵列的正确方法。sItem=”“最后是一个字符串,因为
    sItem
    是一个字符串,“”这是def。信息技术现在我有一些迭代问题,但我可以解决