-1

当我尝试 JSS 时,我需要做这样的事情:

sampleStyle: {
  width: "50px",
  height: this.width
}

我已经尝试了几件事来解决这个问题,但没有一个能满足我的需求。我想出的最接近的一个:

var rect = {
    width_: undefined,
    height_: undefined,
    set width(w) {
        this.width_ = w
        this.height_ = w
    },
    set height(h) {
        this.width_ = h
        this.height_ = h
    },
    get width() {
        return this.width_
    },
    get height() {
        return this.height_
    }
}

我只想问你们为什么我在第一个示例中将 this.width 设置为未定义,有没有更好的方法来处理这个问题?

4

2 回答 2

3

你实际上只需要一个 getter / setter:

sampleStyle: {
  width: "50px",
  get height() { return this.width },
  set height(h) { this.width = h; },
}

为什么我在第一个示例中将 this.width 设为未定义,有没有更好的方法来处理该问题?

原因this不是指向对象,而是指向window并且没有宽度。

还有很多方法,见:

对象字面量声明中的自引用

于 2018-08-21T15:37:43.110 回答
1

在第一个示例中,您尝试width从全局 ( window) 上下文中获取。您必须使用getters/setters(在第二个示例中)来处理本地 ( object) 上下文。

于 2018-08-21T15:37:12.443 回答