评论由:favila 开发
bq. 有没有证据表明 str 的高频使用实际上存在问题?
启动 CLJS-847 的 Kevin Neaton 在生产中使用了只解决 高阶 情况的补丁,他说这个补丁解决了他们的问题。他不受 str 宏 case 的影响,因为要么已经使用了 ''+x(已应用 CLJS-801)或使用了 {{[x].join(')}}(尚未在 Safari 6.0.5 中进行测试,但可能有效)。
因此,如果我们用 ''+x 与 str 宏有问题,那么只要应用 CLJS-847,我们就会使用字符串函数的 ''+x 有问题。
我还没有拉下master分支,但这里有一个测试用例,我认为在使用CLJS-847补丁后将会失败。
(def tricky-obj #js {"toString" (fn [] "hello") "valueOf" (fn [] 42)}) (assert (= (apply str tricky-obj) "hello")) ;;将会得到"42"