ClojureScript para verificar se existe uma propriedade em um objeto js
-
21-12-2019 - |
Pergunta
Como escrevo o seguinte em clojurescript?
obj = {"a" : 4};
"a" in obj;
Solução
Seguindo a maneira SO aceita para verificar se existe uma propriedade do objeto js usando o método "temPropriedadePropriedade"Podemos traduzi-lo da seguinte forma:
(def foo (js-obj "bar" "baz"))
(.hasOwnProperty foo "bar")
;; => true
(.-bar foo)
;;=> "baz"
(.hasOwnProperty foo "car")
=> false
(.-car foo)
;;=> nil
Outras dicas
existe?era adicionado para verificar undefined
em ClojureScript:
(ns my.ns
(:require-macros [cljs.core :refer [exists?]]))
(if (exists? js/jQuery)
(println "jQuery"))
(println "no jQuery"))
Também se pode usar aget
e nil?
para evitar chamar funções JavaScript:
(def scope (js-obj))
(aset scope "var1" "Value")
(aget scope "var1") ;; "Value"
(aget scope "anotherVar") ;; nil
(nil? (aget scope "anotherVar")) ;; true
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow