首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScriptCore evaluateScript不能处理对象?

JavaScriptCore evaluateScript不能处理对象?
EN

Stack Overflow用户
提问于 2020-07-06 18:17:57
回答 1查看 65关注 0票数 2

我正在使用JSContext和JavaScriptCore的其他部分。有人能向我解释为什么evaluateScript在第二个断言中失败了吗?

代码语言:javascript
复制
let context = JSContext()!
let obj1    = context.evaluateScript("[{ 'first': 'Grace', 'last': 'Hopper', 'year': 1906 }]")
assert(obj1?.isArray ?? false)
let obj2    = context.evaluateScript(" { 'first': 'Grace', 'last': 'Hopper', 'year': 1906 } ")
assert(obj2?.isObject ?? false)

为什么在数组中包装对象可以工作,但是原始对象却不能工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-14 12:50:47

正如Pointy所指出的,以{开头的脚本是作为块计算的,而不是对象。这是目前的解决办法:

代码语言:javascript
复制
let obj2 = context.evaluateScript("[{ 'first': 'Grace', 'last': 'Hopper', 'year': 1906 }]")
assert(obj2?.objectAtIndexedSubscript(0)?.isObject ?? false)

基本上是将其封装在一个数组中,然后展开第一个对象。工作很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62762089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档