【问题标题】:In javascript, how do I make a class take an object's properties by reference?在 javascript 中,如何让类通过引用获取对象的属性?
【发布时间】:2022-11-10 00:43:39
【问题描述】:

我不想使用extends 关键字,因为我正在制作浏览器扩展,并且我只能访问实例,而不是类定义。所以我想知道是否可以通过引用将实例的道具分配给我的类实例。下面是我的意思的一个简短示例。

https://jsfiddle.net/aL3n2fek/

我别想做this.obj = obj,从那以后我就要做c.obj.speed

const obj = {
    speed: 105
}

class Car {
    constructor(obj){
    Object.assign(this, obj)
  }
}

const c = new Car(obj);


console.log(c.speed) // logs out 105

obj.speed = 120

console.log(c.speed) // logs out 105 when I want it to log out 120

【问题讨论】:

    标签: javascript object oop reference pass-by-reference


    【解决方案1】:

    您可以使用getter and a setter。

    const obj = {
        speed: 105
    };
    
    class Car 
    {
      #obj
      constructor(obj)
      {
        this.#obj = obj;
      }
      
      get speed()
      {
        return this.#obj.speed;
      }
      
      set speed(value)
      {
        this.#obj.speed = value;
      }
    
    }
    
    const c = new Car(obj);
    
    
    console.log(c.speed) // logs out 105
    
    obj.speed = 120
    
    console.log(c.speed)

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2014-09-23
      • 2020-10-12
      • 2014-09-19
      • 1970-01-01
      相关资源
      最近更新 更多