javascript - 同一对象构造函数的不同实现不适用于谷歌脚本
问题描述
我有这个对象构造函数:
// 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,但在不同的地方。
解决方案
在阅读了最初的评论后,我得出的结论是,问题出在我对全局/本地范围的解释上。
在 linksDocument() 中定义我的对象并将对象作为参数传递给使用它的两个函数(setMainFolderLink() 和 setSubFoldersLinks(14))后,它工作得很好。
最终代码在以下几行中:
// generates links document
function linksDocument() {
...
var linksObject = new createLinksObject(getParentFolderID());
setMainFolderLink(linksObject);
setSubFoldersLinks(14, linksObject);
...
}
推荐阅读
- wordpress - 如何从外部插件在 Wordpress 中保存 SVG 文件
- javascript - 正则表达式仅包含带有可选 ||/&& 和数字的数字
- java - 将 CheckReturnValue 应用于整个项目
- mapbox - Mapbox 加载事件
- linux - 我在 Telegram 中发现了一个错误吗?
- javascript - 将 dot.delimited 对象引用转换为字符串 (javascript)
- matlab - 迭代地将 Matlab 嵌套结构更改为矩阵以绘制直方图
- php - PHPSpreadsheet - 条件格式 - 单元格上的多个条件
- java - 什么可能导致网格生成旋转?LWGL
- python - python 正则表达式 - ConnectionProfile:Database:MSSQL