其实啊,我们操作类的方式跟我们以前操作原型是一样的。
我们知道函数可以作为构造函数,可以实例化出一个对象。
class User{} console.dir(User) function Hd() {} console.dir(Hd)
我们可以发现,他们身上都有prototype。所以,
console.log(User === User.prototype.constructor) // 打印值为trueconsole.log(Hd === Hd.prototype.constructor) // 打印值为true
大家明白了么?其实这个类就是一个语法糖结构,它真正的内部还是一个函数。只不过声明class的时候,让我们面向对象的JS变的更加清晰而已。
来个对比图:我们发现都已经绑到了原型身上。但是class的会更加简洁优雅。
constructor的方法就是为我们对象做属性初始值的,保证每个对象的属性是它独有的。
所以,这个类没有什么复杂的方法跟概念,只是把我们以前定义的方式变得简化,让我们写起来的时候更加方便。再说直白一点,其实就是包了一个壳子,内部使用的还是原型机制