为使用构造函数创建的新对象赋值

Assigning value to new objects made using constructors

我刚刚开始为 Google Apps 脚本编写 JS 来自动化我的一些 Google 表格。所以如果有明显的错误,我提前道歉。

我已经使用构造函数定义了一个对象,当我尝试创建相同类型的新对象时,在圆括号中给出变量值,这些值似乎被采用了。

代码如下:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("First Sorting");
var negsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Negative List");
function pastesheet (lastrow, append, pasterow) {
  this.lastrow = sheet.getLastRow();
  this.append = 1;
  this.pasterow = sheet.getRange(1, 1);
}
var neg = new pastesheet(negsheet.getLastRow(), 1, negsheet.getRange(1, 1));

从记录器我观察到使用上面的代码 neg.lastrow 实际上是指 sheet "First Sorting" 的最后一行而不是我希望它引用的 "Negative List" . 我还观察到对上述代码最后一行的以下调整可以满足我的要求:

ver neg = new pastesheet();
neg.lastrow = negsheet.getLastRow();
neg.append = 1;
neg.pastrow = negsheet.getRange(1,1)

但是,我真的很想首先知道我做错了什么?在一行中分配所有内容是非常方便的,我打算这样做很多 sheets。

您的构造函数正在引用 sheet,这不是参数,因此引用了全局主体中定义的 "First Sorting" sheet

您是否打算按照这些思路做某事:

function pastesheet (sheet, append) {
  this.lastrow = sheet.getLastRow();
  this.append = append;
  this.pasterow = sheet.getRange(1, 1);
}
var neg = new pastesheet(negsheet, 1);

?