Es6中的class类
class实质上是对js中继承的封装组合,用一种“语法糖”的形式实现原型链的继承 静态属性/方法 静态方法/属性是指,函数作为对象时,定义在其原型(__proto__)上的方法,而需要实例化继承的动态方法是定义在其原型对象(prototype) 中的,静态方法中的参数都是固定的,直接通过整个构造函数调用,实例化对象并不会继承;而动态方法中的参数会因为实例化对象的不同而产生改变,实例化对象默认是继承的。 function User(){} User.__proto__.show=function(){} console.dir(User) //这里的show()方法就属于静态方法 在class中,利用static定义静态属性/方法 class Admin{ static show(){}//__proto__中 show(){}//prototype中 } console.dir(Admin) 关于class一些注意点 class中声明的方法在prototype对象中,由于默认的属性特征设置,这些方法是不可遍历的! class Admin{ show(){} } console.log( Object.getOwnPropertyDescriptor( Admin.prototype,"show" )) //enumerable: false class中声明方法时,方法之间不用,隔开! class中默认开启严格模式 class中的属性保护 主要可以通过三种途径实现属性保护:Symbol,weakmap,私有属性 1.Symbol /*利用Symbol创建一个受保护的属性的集合对象,无法直接获取,只能通过自定义的get/set方法*/ const protects = Symbol('受保护的属性') class User { constructor(name) { this.name = name this[protects] = { host: 'https://www.fintinger.xyz', token: '5574f1b81bbe4e3847e7a83c0a84a442', password: '123456' } } set host(url) { if (!...