评论者:favila
bq. 有没有证据表明更高的 str 使用实际上是有问题?
Kevin Neaton,他打开了 CLJS-847,在生产中使用了只解决高阶情况的补丁,并且他说该补丁为他们解决了问题。他不受 str 宏情况的影響,因为它要么已经使用了 ''+x(已应用 CLJS-801)或使用了 {{[x].join('')}}(尚未在 Safari 6.0.5 中测试,但可能工作)。
如果在使用str宏时遇到 ''+x 问题,那么只要应用了CLJS-847,使用字符串函数的 ''+x 同样会出现问题。
我还没有 pull down master,但这里有一个测试案例,我相信 CLJS-847 补丁会使它失败。
(def tricky-obj #js {"toString" (fn [] "hello") "valueOf" (fn [] 42)}) (assert (= (apply str tricky-obj) "hello")) ;; 将得到 "42"