Coffeescript和Ecmascript 6获取并设置关键字

时间:2015-04-24 09:58:27

标签: coffeescript ecmascript-6

我遇到了coffeescript的问题,我希望能够使用ecmascript获取和设置关键字,但语法在coffeescript中没有意义。

这是原始javascript的示例

// A Tutorial class that takes a document in its constructor
Tutorial = function (id, name, capacity, owner) {
    this._id = id;
    this._name = name;
    this._capacity = capacity;
    this._owner = owner;
};

Tutorial.prototype = {
    get id() {
        // readonly
        return this._id;
    },
    get owner() {
        // readonly
        return this._owner;
    },
    get name() {
        return this._name;
    },
    set name(value) {
        this._name = value;
    },
    get capacity() {
        return this._capacity;
    },
    set capacity(value) {
        this._capacity = value;
    }
};

这是我最好猜测可能转化为什么的一个例子:

class Question
  constructor: (id, @name, @capacity, @owner) ->
    @_id = id


Question::get id() ->
  return @_id
然而,当然,这实际上并没有编译成任何有用的东西。

我已经看过几个解决方案的例子,但我想真正的问题是Coffescript中是否有直接的支持?

1 个答案:

答案 0 :(得分:2)

我不认为Coffeescript确实支持对象文字中的getter / setter声明。已多次讨论,请参阅问题644513222878

  

总结:我们明确忽略了setter / getter的存在,因为我们认为它们是JS的一个不好的部分

您可以获得的最佳解决方法是

self.extensionContext?.extractURL({ (url) -> Void in
    self.urlLabel.text = url?.absoluteString
    println(url?.absoluteString)
})