请分享您的想法,参与 2024 Clojure 状态调查!

欢迎!请查看关于页面获取更多关于它如何运作的信息。

0 投票
ClojureScript

当将 {{this-as}} 表达式放入“作用域函数”中,例如在 {{let}} 绑定中时,通过 {{this-as}} 绑定的值指向作用域函数,而不是外部作用域。

示例

`
(def foo
(js-obj

"bar" "baz"
"getBarRight" (fn [] (this-as self (.-bar self)))
"getBarWrong" (fn []
                (let [bar (this-as self (.-bar self))]
                  bar))))
 

(.log js/console (.getBarRight foo)) ;; => "baz"
(.log js/console (.getBarWrong foo)) ;; => undefined
`

而 {{foo.getBarRight}} 则扩展为类似以下的内容

function() { var self = this; // this 指向 foo return self.bar; // 返回 "bar" }

另一方面,{{foo.getBarWrong}} 扩展为

`
function() {
var bar = function() {

var self = this; // this refers to enclosing function
return self.bar; // returns undefined

}();
return bar; // 返回 undefined
}
`

1 答案

0 投票
参考:https://clojure.atlassian.net/browse/CLJS-719(由 alex+import 报告)
...