gpt4 book ai didi

javascript - 如何在 ClojureScript 中使用方法和构造函数创建 JS 对象

转载 作者:可可西里 更新时间:2023-11-01 02:15:25 26 4
gpt4 key购买 nike

假设任务是在 clojurescript 中创建一些实用程序库,以便它可以在 JS 中使用。

例如,假设我想生成等同于:

    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 中是否有更优雅/惯用的方式?

最佳答案

这已通过 JIRA CLJS-83 解决通过向 deftype 添加一个神奇的“对象”协议(protocol):

(deftype Foo [a b c]
Object
(bar [this x] (+ a b c x)))
(def afoo (Foo. 1 2 3))
(.bar afoo 3) ; >> 9

关于javascript - 如何在 ClojureScript 中使用方法和构造函数创建 JS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com