class里面的构造器是方法吗?
如果不是方法为什么是函数呢?
最近学习的时候,发现这个问题很有趣,了解了一下。
首先我们对于方法的定义是,通过对象调用的函数被称为方法
下面的这段代码我们new了一个实例, p.constructor是错误的,不能调用出来这个方法
我们的结论就是 构造器
是函数
我们不能因为它在对象里面就把它看成一个方法
class Person {
constructor(public name:string) {
this.name = name
}
getName() {
console.log(this.name);
}
}
let p = new Person('zs')
p.getName()
我们了解一下构造器这个函数
看下面的代码,其实构造器是有默认返回值的,返回的就是this
,这个this其实就是指向 Person这个对象
class Person {
constructor(public name:string) {
this.name = name
console.log(this);
return this
}
getName() {
console.log(this.name);
}
}
let p = new Person('zs')
p.getName()
我们可以看下面的这段话,十分关键
构造器是在对象空间地址赋值给对象变量之前被调用,而不是被对象变量调用的。
构造器是在对象空间地址赋值给对象变量之前被调用
这句话的意思是构造器
这个函数在 new 之前就被调用了。
对象空间地址赋值给对象变量,这句话就是实例化的时候,这句话如果不理解就是基础没有学好。
对象变量指的是栈里面存放对象地址的变量
,上面代码实例化的 p 变量就是对象变量
p.getName() 是被对象调用的,被称为方法