Clojurectcript, чтобы проверить, существует ли свойство в объекте JS

StackOverflow https://stackoverflow.com//questions/22046889

  •  21-12-2019
  •  | 
  •  

Вопрос

Как я могу написать следующее в Clojurecript?

obj = {"a" : 4};
"a" in obj;
.

Это было полезно?

Решение

Следуя принятым таким образом, чтобы проверить, существует ли свойство объекта JS Object, используя метод « hasownproperty " Мы можем перевести его следующим образом:

(def foo (js-obj "bar" "baz"))
(.hasOwnProperty foo "bar")
;; => true
(.-bar foo)
;;=> "baz"
(.hasOwnProperty foo "car")
=> false
(.-car foo)
;;=> nil
.

Другие советы

exists? was added to check for undefined in ClojureScript :

   (ns my.ns
     (:require-macros [cljs.core :refer [exists?]]))

   (if (exists? js/jQuery)
      (println "jQuery"))
      (println "no jQuery"))

One can also use aget and nil? to avoid calling JavaScript functions :

(def scope (js-obj))
(aset scope "var1" "Value")
(aget scope "var1")               ;; "Value"
(aget scope "anotherVar")         ;; nil
(nil? (aget scope "anotherVar"))  ;; true
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top