更改Javascript变量的类

更改Javascript变量的类,javascript,class,oop,Javascript,Class,Oop,是否可以更改Javascript变量的类 假设我有两门课: class A { constructor(x) { this.x = x; } } class B { constructor(x, y) { this.x = x; this.y = y; } } 和一个A型变量 let a = new A(20); 如何更改a的类型,使 (a instanceof B) 返回true而不是false 编辑:我想知道如何解决一个具体问题。我有一个树

是否可以更改Javascript变量的类

假设我有两门课:

class A {
  constructor(x) {
    this.x = x;
  }
}

class B {
  constructor(x, y) {
     this.x = x;
     this.y = y;
  }
}
和一个A型变量

let a = new A(20);
如何更改
a
的类型,使

(a instanceof B)
返回true而不是false

编辑:我想知道如何解决一个具体问题。我有一个树结构,其中树的每个节点都是类a或B的Javascript对象(实际上我有更多的类,它们都继承自基类,但让我们保持简单)。
在某种程度上,我想将节点a转换为节点B。但我只能访问节点本身,不能访问父节点。因此,我想在类a中创建一个方法,将实例化变量转换为类B的对象。

使其中一个类扩展另一个类

B类{
构造函数(x,y){
这个.x=x;
这个。y=y;
}
}
A类延伸至B类{
构造器(x){
超级();
这个.x=x;
}
}
设a=新的a(20);

console.log(B的一个实例)为了响应您的更新,一个可能的解决方案是使用
指针
对象。
指针是一个透明的代理,它将每个“set”和“get”操作重定向到其
目标。此外,它还提供了一个特殊属性(
$$
,在本例中),允许在不更改指针本身的情况下更改目标。这样,只要直接引用对象,就可以“就地”替换对象

对于应用程序的其余部分,
指针(x)
的外观和行为与
x
完全相同

例如:

let Pointer=target=>new Proxy({}{
getPrototypeOf(){
返回Reflect.getPrototypeOf(目标)
},
获取(uu,p){
返回Reflect.get(目标,p)
},
集合(u,p,v){
如果(p=='$$')
返回目标=v
返回反射设置(目标、p、v)
}
})
//
甲级{
你好(){
返回“aaa”
}
}
B类{
你好(){
返回“BBB”
}
}
让对象=[
指针(新A),
指针(新A),
指针(新A),
指针(新A),
]
函数setObjectToB(obj){
对象$$$=新B
}
console.log(…objects.map(x=>x.hello())
console.log(对象[2]实例A)
setObjectToB(对象[2])
console.log(…objects.map(x=>x.hello())

log(objects[2]instanceof B)
这是纯粹的好奇还是您试图解决的具体问题?(在这种情况下,请告诉我们更多信息)。我正在尝试解决一个特定的问题。我编辑了我的问题