class中的构造器到底是啥意思

class Student {
    constructor(name){
        this.name = name
    }
}

以及,为什么要this.name = name

阅读 1.9k
3 个回答

面试题: new 的时候都发生了什么?


你需要知道 new 怎么使用?

你需要理解 public、private 的区别。对照回去就是 Array.isArray 和 array.prototype.forEach

constructor 就是当做初始化函数来说,一般创建一个对象的时候都会传入一些配置,比如说id啊之类的。

至于为什么用 this,这是因为 class 本身操作的就是原型链这些逻辑。把数据放在了原型链。
于之对应的是闭包。

构造器,或者构造函数,你可以当做是一个特殊的方法,实例化的时候会调用该方法。至于this,你可以当做作用域上下文。
你这里完整的含义是,实例化对象的时候,传入name参数,即赋值给name属性。

实例化对象:
const s = new Student('student name')
通过实例化对象取值:
s.name

没有class支持之前,类也是一个函数而已,所以class的写法你也可以看做是一种语法糖。

function Student(name){
    this.name=this.name;
}

如果将这里的Student视作一个类的话,构造函数就是这个函数本身,而this即使该函数的作用域上下文。

如果结合JavaScript的原型链来理解的话,会好很多,建议你先去看看相关的基础。

构造器就是利用类来构造实例时调用的类函数,是实例化类是默认调用的一个特殊函数。

只所以要用this.name因为构造后的实例属性name应该与实例绑定,这里就是利用this来绑定的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题