TypeScript class 构造函数和成员的初始化顺序

简介: TypeScript class 构造函数和成员的初始化顺序

看下面这段代码:

class Base {
  name = "base";
  constructor() {
    console.log("My name is " + this.name);
  }
}
class Derived extends Base {
  name = "derived";
}
// Prints "base", not "derived"
const d = new Derived();

输出的是 base,而不是 derived:

image.png



这是因为 JavaScript 下列的初始化规则:


基类的成员初始化

基类的构造函数初始化

子类的成员初始化

子类的构造函数初始化

这意味着基类构造函数在它自己的构造函数中看到了它自己的 name 值,因为派生类的字段初始化还没有运行。

/118228427

相关文章
|
5月前
|
编译器 C++
C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员
C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员
89 0
|
5月前
|
JavaScript 前端开发 编译器
TypeScript 类 第二章 【参数属性,存取器,静态属性】
TypeScript 类 第二章 【参数属性,存取器,静态属性】
59 2
|
5月前
|
JavaScript
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
52 0
|
5月前
|
编译器 C++
类与对象(三)--构造函数体中的赋值和初始化列表的区别
类与对象(三)--构造函数体中的赋值和初始化列表的区别
|
Kotlin
Kotlin 中定义类、field关键字,主构造函数和次构造函数详解
Kotlin 中定义类、field关键字,主构造函数和次构造函数详解
153 0
|
5月前
|
存储 设计模式 JavaScript
TypeScript 类的基础:从定义到实例化,让你快速掌握(三)
TypeScript 类的基础:从定义到实例化,让你快速掌握
|
5月前
|
存储 JavaScript
TypeScript 类的基础:从定义到实例化,让你快速掌握(二)
TypeScript 类的基础:从定义到实例化,让你快速掌握
|
5月前
|
缓存 JavaScript 前端开发
TypeScript 类的基础:从定义到实例化,让你快速掌握(一)
TypeScript 类的基础:从定义到实例化,让你快速掌握
|
JavaScript
TypeScript 类(class)与修饰符的详细使用
TypeScript 类(class)与修饰符的详细使用
122 0
|
存储 编译器 C语言
【C++学习】类和对象 | 再谈构造函数 | 构造函数中的隐式类型转换 | static静态成员
【C++学习】类和对象 | 再谈构造函数 | 构造函数中的隐式类型转换 | static静态成员
81 0