我有这个对象构造函数:
// links object creator
function createLinksObject(id) {
//constructor area
this.mainFolderId = id;
this.mainFolder = DriveApp.getFolderById(id);
this.mainFolderName = this.mainFolder.getName();
this.mainFolderLink = this.mainFolder.getUrl();
this.subFoldersArray = [];
// function calling area
addSubFolders(this.mainFolder, this.subFoldersArray);
sortArray(this.subFoldersArray);
}
哪个可以正确实现此实现?
var linksObject;
// generates links document
function linksDocument() {
if (!showDevAlert("LINKS - HAHNE")) {
return;
}
setTextStyle("A1:Z1000", "arial", 14, "center", "middle");
createsHeaders("", "", "", "", "R00");
setTitle("LINKS");
linksObject = new createLinksObject(getParentFolderID());
setMainFolderLink();
setSubFoldersLinks(14);
renameSheet("LINKS");
}
但是当我尝试在linksDocument()函数中直接定义linksObject时,为什么我的代码无法运行。
// generates links document
function linksDocument() {
if (!showDevAlert("LINKS - HAHNE")) {
return;
}
setTextStyle("A1:Z1000", "arial", 14, "center", "middle");
createsHeaders("", "", "", "", "R00");
setTitle("LINKS");
var linksObject = new createLinksObject(getParentFolderID());
setMainFolderLink();
setSubFoldersLinks(14);
renameSheet("LINKS");
}
或者当我尝试在函数之外完全定义它时。
var linksObject = new createLinksObject(getParentFolderID());
// generates links document
function linksDocument() {
if (!showDevAlert("LINKS - HAHNE")) {
return;
}
setTextStyle("A1:Z1000", "arial", 14, "center", "middle");
createsHeaders("", "", "", "", "R00");
setTitle("LINKS");
setMainFolderLink();
setSubFoldersLinks(14);
renameSheet("LINKS");
}
注意:
setMainFolderLink()和setSubFoldersLinks(14)是仅有的两个函数 将使用对象linksObject。
无论如何,我只定义一次linksObject,但是在不同的地方。
答案 0 :(得分:0)
在阅读了最初的评论之后,我得出的结论是问题在于我对全局/局部范围的解释。
在linksDocument()中定义我的对象并将该对象作为使用它的两个函数(setMainFolderLink()和setSubFoldersLinks(14))的参数传递后,它就可以正常工作。
以下几行是最终代码:
// generates links document
function linksDocument() {
...
var linksObject = new createLinksObject(getParentFolderID());
setMainFolderLink(linksObject);
setSubFoldersLinks(14, linksObject);
...
}