学习TS时对类的概念不太理解,想知道创建对象时直接赋值与在constructor 方法中赋值的区别在哪里,求解答
class Test1 {
num1: number
num2: number
}
let test1 = new Test1()
test1.num1 = 1212
test1.num2 = 3344
console.log(test1); //运行结果:Test1 {num1: 1212, num2: 3344}
class Test2 {
num1: number
num2: number
constructor(num1: number, num2: number){
this.num1 = num1
this.num2 = num2
}
}
let test2 = new Test2(1212,4455)
// test2.num1 = 1212
// test2.num2 = 3344 //运行结果:Test2 {num1: 1212, num2: 3344}
console.log(test2); //运行结果:Test2 {num1: 1212, num2: 4455}
constructor中文解释是构造器,它是类不可或缺的一部分,你在定义类的时候可以不定义构造器,但是类在编译的时候也会自动生成一个构造器,
并且当你new 当前类的时候,构造器会自动运行
对于类里面定义的变量赋值,不一定非要在构造器当中完成,直接赋值也是可以的,在实际使用当中没什么差距,但是如果你在构造器当中定义了参数,那么就代表这个参数是生成这个类的实例的时候必要的参数,
如果是在实例创建完成后再赋值,最终效果虽然也是一样的,但是就没有些在构造器当中那么强制性了
举例,如果你是负责完成某个工具类,你需要某一个参数是必填的,不填就会报错,那你就可以在你的类的构造函数里面声明这个变量呀,这样别人在调用你这个类的时候就知道,这个变量是需要传进来的,不然就不能调用这个类
如果都是你一个人用这个类,你知道这个属性需要初始化,但是你可以不在构造器里面声明,而是生成实例以后再赋值初始化,也是可以的,但是如果你忘记初始化了,那可能就会出错
构造器的意义就在于声明这个类里面哪些属性是需要一开始就初始化的,即想要构造这个类,你需要给我哪些参数我才能将类的实例给你构造出来
直接赋值一般来说是 常量,在controctor 里的一般是需要穿进来的参数 来计算出变量是啥
看一下这篇文章,https://blog.csdn.net/momDIY/article/details/79997793
不一定要用 ,你不写 ,它会默认 生成的 。