Javascript类变量访问



这里有问题。我有这个代码

class Primary {
constructor() {
const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(this));
console.log(methods);
}
}
class Secondary extends Primary {
myVar = '';
test() {
//Do Nothing
}
}

如果我启动二级类,它将打印['constructor', 'test'],但我不能对二级类中的变量做同样的事情。还有人知道这是怎么做到的吗?

类字段声明只是构造函数中为实例分配属性的语法糖:

class Secondary extends Primary {
myVar = '';

class Secondary extends Primary {
constructor() {
super();
this.myVar = '';
}

属性在实例上是,而不是在原型上——并且super调用发生在属性被分配之前(没有办法改变这一点;在构造函数中访问实例之前,需要进行超级调用)。

我将在父类中添加一个不同的方法,该方法检查所需的变量,可以在实例完全初始化后调用:

class Primary {
checkProps() {
const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(this));
const instanceProps = Object.getOwnPropertyNames(this);
console.log(methods);
console.log(instanceProps);
}
}
class Secondary extends Primary {
myVar = '';
test() {
//Do Nothing
}
}
const s = new Secondary();
s.checkProps();

相关内容

  • 没有找到相关文章

最新更新