es6为类创建多个构造函数
虽然ES6之后可以实现JavaScript创建Class,但自身并不提供函数重载,所以无法直接创建多个构造函数
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
解决
- 原理则是对一个构造函数的传值进行类型判断,从而实现根据类型的不同调用不同的构造函数方法体
export default class User { constructor (obj) { if (typeof obj === 'string') { this._constructorSimple(obj) } else if (typeof obj === 'object') { this._constructorComplex(obj) } } _constructorSimple (id) { this.id = id this.code = '' this.name = '' this.sex = '男' this.age = 20 this.birthday = '' this.address = '' this.selectedGroup = [] this.selectedRoles = [] } _constructorComplex (data) { this.id = data.id this.code = data.code this.name = data.name this.sex = data.sex this.age = data.age this.birthday = data.birthday this.address = data.address this.selectedGroup = data.groupIds.split(',') this.selectedRoles = data.selectedRoles } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java序列化 ObjectOutputStream源码解析
概述 众所周知,Java原生的序列化方法可以分为两种: 实现Serializable接口 实现Externalizable接口 其实还有一种,可以完全自己实现转为二进制内容,用Unsafe写到内存里面,然后写入文件 Serializable 可以使用ObjectStream默认实现的writeObject和readObject方法并且可以通过transit关键字来使得变量不被序列化,开发简单 除了输出协议和包名类名外,会额外输出类的变量信息 有缓存机制,对于重复对象会直接输出所在位置,所以类较大且重复内容多时反而效率高,但会消耗额外内存空间 如果父类没有无参构造函数则不会序列化父类 Externalizable 必须完全由自己来实现序列化规则所以可以直接控制哪些变量需要序列化,所以开发工作量较大 可以自己决定输出内容,只会固定输出协议和包名类名,较为简洁,对于小对象的序列化Externalizable会快一些 必须有无参构造函数否则编译会出错 但是,普遍实际项目开发中对于原生序列化的使用非常少,我觉得这里面的主要原因还是出在原生的对象流本身设计上一些是否安全的判断过多,加上缓冲区本...
- 下一篇
var let const 的区别
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82820647 var是ES6之前JavaScript用于定义变量的语法,而let const是ES6之后JavaScript用于定义变量的语法 更多精彩 更多技术博客,请移步 asing1elife’s blog var存在的两个bug JS没有块级作用域 通过var声明的变量,其作用域是函数的全部 循环内变量会过度共享 意思就是说在循环内部定义的变量,在循环外部依旧可以访问 let存在的意义 let声明的变量拥有块级作用域 let声明的变量其作用域只是外层快,而不是外层函数 let声明的全局变量不是全局对象的属性 通过let声明的全局变量无法通过window.变量名进行访问,其只存在于一个不存的作用域中 行如 for(let x in data) 的循环在每次迭代时都会为 x 创建新的绑定 let声明的变量无法重新被定义 const的作用 const就是用于定义常量的
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS关闭SELinux安全模块
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7