Javascript 如何在初始化下一个属性时获取对象属性值?

Javascript 如何在初始化下一个属性时获取对象属性值?,javascript,object,styled-components,jss,Javascript,Object,Styled Components,Jss,当我尝试JSS时,我需要做如下操作: sampleStyle: { width: "50px", height: this.width } 我试过几种方法来解决这个问题,但都不能满足我的需要。我想到的最接近的一个: var rect = { width_: undefined, height_: undefined, set width(w) { this.width_ = w this.height_ = w },

当我尝试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_
    }
}

我只是想问你们为什么我得到这个。宽度作为未定义的第一个例子,有没有更好的方法来处理这个问题

在第一个示例中,您试图从全局(
窗口
)上下文中获取
宽度

必须使用
getter/setter
(第二个示例中有)来处理本地(
对象
)上下文。

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

sampleStyle: {
  width: "50px",
  get height() { return this.width },
  set height(h) { this.width = h; },
}
第一个例子中,为什么我得到这个.width是未定义的,有没有更好的方法来处理这个问题

原因
不是指向对象,而是指向
窗口
,并且没有宽度

还有很多方法,请参见:


这指的是第一个样本中的对象本身,而不是全局不,你错了。让我们试着运行它:
Let sampleStyle={width:123,height:this};console.log(sampleStyle.height)
你会得到
Window
object.wow,这是因为在我试图得到它的值时没有声明宽度并且看起来是外部范围吗?这是因为
this
在his上下文中调用(他的上下文是全局的-
Window
)-他不知道被调用对象中的
width
属性