JS에서 사용할 수 있도록 clojurescript에 몇 가지 유틸리티 lib를 만드는 것이라고 상상해보십시오. 예를 들어ClojureScript에서 메서드 및 생성자를 사용하여 JS Object를 만드는 방법
,의 내가 동등한 생산한다고 가정 해 보자 : 나는와 함께 그것을 달성하기 위해
var Foo = function(a, b, c){
this.a = a;
this.b = b;
this.c = c;
}
Foo.prototype.bar = function(x){
return this.a + this.b + this.c + x;
}
var x = new Foo(1,2,3);
x.bar(3); // >> 9
한 가지 방법은 다음과 같습니다
(deftype Foo [a b c])
(set! (.bar (.prototype Foo))
(fn [x]
(this-as this
(+ (.a this) (.b this) (.c this) x))))
(def x (Foo. 1 2 3))
(.bar x 3) ; >> 9
질문 :/더 우아한 관용적있다 clojurescript에서 위의 방법?
감사합니다, 그것은 사실 관용적 보이지만, 당신은 (우리가 LIB JS를 구축하고있다), JS에서 호출 할 수 없습니다 : cljs.user.afoo.bar (3) 여기서 우리가 할 수있는 : cljs.user.x.bar (3) JS 한쪽에서 관용적 버전을 사용하기 위해 는 전화를해야 : cljs.user.afoo.cljs $ user $ IFoo $ bar (null, 3) 내가 뭔가를 놓친 건가요? – Lambder
@ user535149 정말 다른 질문입니다. 뭔가를 내보내고 싶다면 (defn^: export foo [..] ...) – dnolen
^: export는 'something'이 함수 인 한 작동합니다. 프로토 타입에 정의 된 메서드를 가진 객체를 내보내려고합니다. – Lambder