小编Jam*_*nge的帖子

instanceof String在Google Apps脚本中的行为不符合预期

我想检查一下Apps脚本中的变量是否是一个String,但发现当变量实际上是一个字符串时,instanceof没有返回true.以下测试:

function test_instanceof() {
  var a = "a";
  Logger.log('"a" is ' + ((a instanceof String) ? '' : 'not ') + 'a String');
  var b = String("b");
  Logger.log('String("b") is ' + ((b instanceof String) ? '' : 'not ') + 'a String');
}
Run Code Online (Sandbox Code Playgroud)

记录这两条消息:

"a" is not a String
String("b") is not a String
Run Code Online (Sandbox Code Playgroud)

虽然显然instanceof是一个有效的运算符而String是一个有效的类型,但是从没有异常的代码执行的事实来看,文档并不清楚支持ECMAScript的子集.

检查变量类型的适当方法是什么?

google-apps-script

7
推荐指数
1
解决办法
2821
查看次数

如何在同一个Chrome应用程序的多个窗口之间进行通信?

使用chrome开发人员工具时,似乎每个应用程序窗口(以及背景"页面")都有自己的javascript上下文(对象空间,执行线程),但chrome.app.window.create的createdWindow回调显然提供了直接访问刚刚创建的"其他"窗口的对象.

鉴于此,我不清楚窗口之间的最佳通信方式; 例如,如果我打开第二个窗口作为对话框,当用户单击"确定"保存更改时,我应该使用postMessage,sendMessage还是只调用主窗口中对象的函数.我查看了消息传递示例,他们似乎专注于两个不同应用程序之间或应用程序和扩展程序之间的通信.

所以,我正在寻求一个应用程序内的内存和执行模型的清晰描述.是否有单独的上下文,或者它只是一个对象空间,有一个执行线程?在同一个Chrome应用程序的窗口之间进行通信的最佳方式是什么?

google-chrome-app

6
推荐指数
1
解决办法
2134
查看次数