我正在考虑使用JSON和JavaScript创建电子表格。这实际上是关于JavaScript的理论问题。
在某些情况下,当您使用单个函数生成整列时,它会更有用。就像在这个例子中一样:
{
"type": "jsheet",
"version": "1",
"author": "John Doe",
"title": "Example Spreadsheet",
"groups":
[
{
"name": "Document Information",
"columns":
[
{
"name": "Title",
"rows": [
"_.title"
]
},
{
"name": "Author",
"rows": [
"_.author"
]
}
]
}
{
"name": "Numbers 1-10",
"columns":
[
{
"name": "Even numbers",
"rows": "_.range(1,10).evens()"
},
{
"name": "Odd numbers",
"rows": "_.range(1,10).odds()"
}
]
}
]
}
当您只使用来自受信任来源的代码并且仅在您的计算机上工作时,这似乎完全没问题。但想想像Google云端硬盘这样的云端服务。如果用户粘贴不安全的代码或打开不安全的电子表格,他们可能会遇到危险。例如,脚本可以操作DOM,甚至可以访问cookie,执行请求等。有没有办法安全地防止这种情况发生,而无需实现自定义JavaScript解析器?
编辑Kenneth的回答:
当然,我不打算使用eval()
来解析文档本身。我只考虑使用eval()
或文档中定义的函数来计算表达式。考虑使用这一行脚本指定整列的可能性:_.range(1,10).evens()
或_.range(10,200).filter(isprime)
。其中_
是一个对象,它具有返回另一个具有类似方法的对象的方法。就像jQuery和d3中的链一样。
答案 0 :(得分:1)
如果您使用JSON.parse
,则没有问题。
当然,如果您使用eval()
,那么一切皆有可能。