Javascript 对象属性未更新
我有一个对象,它有一个更新对象变量的函数。我也想将此函数用作构造函数,这样我就可以定义其中的属性。如果我只在这个函数中定义属性,其他函数就不会意识到这个变化。 我的意思是,这个.property返回未定义的 该对象如下所示:Javascript 对象属性未更新,javascript,Javascript,我有一个对象,它有一个更新对象变量的函数。我也想将此函数用作构造函数,这样我就可以定义其中的属性。如果我只在这个函数中定义属性,其他函数就不会意识到这个变化。 我的意思是,这个.property返回未定义的 该对象如下所示: function LastRow_(sheet) { var lastCol,firstRowVals,rowNumber,headers; this.rowValues; updateObject(); // Logger.log(he
function LastRow_(sheet)
{
var lastCol,firstRowVals,rowNumber,headers;
this.rowValues;
updateObject();
// Logger.log(headers);
/*Returns the value of a specific column within last row.
It accepts header name or column letter in A1 notation*/
this.getColValue=function(column)
{
updateObject();
Logger.log(this.rowValues);
var index=getColNumber(column);
if(index>-1) return this.rowValues[index];
Logger.log("Can't find header, trying with: "+column+rowNumber);
return sheet.getRange(column+rowNumber).getValue();
};
this.setColValue=function(column,value)
{
updateObject();
};
function getColNumber(colName){ return headers.indexOf( colName.toLowerCase() ); }
/*This function is to be sure that you are allways working with the last row
and an updated version of the headers*/
function updateObject()
{
if(lastCol!==sheet.getLastColumn())
{
Logger.log("Updating row Headers");
lastCol=sheet.getLastColumn();
firstRowVals=sheet.getRange(1,1,1,lastCol).getValues()[0];
headers=[];
for(var i=0;i<firstRowVals.length;i++)
headers.push(firstRowVals[i].toLowerCase());
Logger.log(headers);
}
if(rowNumber!==sheet.getLastRow())
{
Logger.log("Updating row Values");
rowNumber=sheet.getLastRow();
this.rowValues=sheet.getRange(rowNumber,1, 1, lastCol).getValues()[0];
Logger.log(this.rowValues);
}
};
}
问题是此.rowNumber未定义
提前感谢。您能在看到意外行为的地方分享代码吗?也许这会帮助人们理解问题的确切性质只要简单地调用对象方法就会引发错误您可以设置JSFIDLE吗?您有var lastCol、firstRowVals、rowNumber、headers;但您永远不会在对象中的任何位置使用this.rowNumber指定对象的属性object@ekhaled我认为在JS中不需要首先声明变量。也许这个.rowNumber指向了另一个对象,因为?
function test() {/*valueLastRow(SpreadsheetApp.getActiveSpreadsheet().getSheetByName('workedDays'),"C",5)*/
var LastRow=new LastRow_(SpreadsheetApp.getActiveSpreadsheet().getSheetByName('workedDays'));
Logger.log(LastRow.getColValue("D"));
Logger.log(LastRow.getColValue("sede"));
}