ES6构造函数对比教学

在ES6中构造函数也是不可获缺的一部分那么在ES3.1与ES6中对比,到底是在那些地方进行升级了,请看我一一道来

构造函数基础部分
ES3.1缺点:属性和原型方法分开了,代码可读性差
ES6优点:从逻辑上说更合理,成为一个整体
ES6构造函数规范
1.类的声明不会被提升,和let const 一样,有临时性死区
2.类的所有代码全都是在严格模式中执行
3.类的所有方法都是不可枚举的
4.类的所有方法都无法当成构造函数直接使用
5.类的构造器必须使用new 来调用
对象中类的方法
1.可以写成计算属性名
2.可以使用getter 和 setter×暂未理解×
3.静态成员×暂未理解×
4.字段初始器(es7)

class Test{
			a = 1;  //简写,初始化的工作,如果没有使用static,就是实例成员
			b = 2;
			static c = 3
			// constructor(){
			// 	this.a = 1;
			// 	this.b = 2
			// }
			const t = new Test()
			console.log(t.a,t.b,t.c,Test.c)//1,2,ubdefined,3
  1. 类表达式
const A = class{   //匿名类,类表达式,类在js中本身就是表达式
			a = 1;
			b = 2;
		}
		const a = new A();
		console.log(a)

eg:通过以下的例子很容易看的得出来ES6中将增加实例方法写进构造函数中这样写可以规范代码,符合编码习惯,加快书写效率。

//ES3.1构造函数
function Person(job,name,age,sex){
			this.job = job;
			this.name = name;
			this.age = age;
			this.sex = sex;
		}
		//增加实例方法
		Person.prototype.print = function(){
			console.log('工作:',this.job)
			console.log('姓名:',this.name)
			console.log('年龄:',this.age)
			console.log('性别:',this.sex)
		}
		const a = new Person("程序猿","zhansan",30,"nan");
		a.print()
//ES6构造函数
class Person{
			constructor(job,name,age,sex){
				this.job = job;
				this.name = name;
				this.age = age;
				this.sex = sex;
			}
			print(){
				console.log('工作:',this.job)
				console.log('姓名:',this.name)
				console.log('年龄:',this.age)
				console.log('性别:',this.sex)
			}
		}
		const a = new Person("程序猿","zhansan",30,"nan");
		console.log(a)
		a.print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值