ES6构造函数class 和 ES5构造函数语法

  在说构造函数之前,我们先讲一讲面向对象编程。所谓的面向对象编程,是一种编程思想和书写方式方法,它是将程序封装在对象内,并给对象设置属性和属性值。而这个封装程序的对象我们称之为实例化对象,而生成实例化对象的函数就是构造函数。
  一般情况下,为了和普通函数区别,我们将构造函数的首字母大写。
  接下来我们说说定义构造函数,在函数内,定义实例化对象的方法,通过的是this来指定定义实例化对象的属性:this.属性=属性值。而方法,我们设定在prototype中。在ES5中,我们定义方法是通过:构造函数.prototype.函数方法名 = function(){} 来定义。我们来看下面的代码。

function Fun1(name,age,sex){	
	this.name = name;
	this.age = age;
	this.sex = sex;
}
Fun1.prototype.f1 = function(){
	console.log(this.name,this.age,this.sex);
}

  这是一个简单的构造函数,当我们调用这段代码时会生成一个实例化对象:

const obj1 = new Fun1('张三',18,'男');
obj1.f1();

  我们来看一看运行结果
在这里插入图片描述
  总结一下:ES5的构造函数就是将我们需要的数据存储在对象的属性中,然后将方法存储在构造函数的prototype中,当我们调用数据时通过实例化对象的属性获取,调用方法时,对象中没有的方法会去实例化对象中寻找__proto__,而在__proto__中存储着构造函数的prototype中的方法,因此我们直接使用“实例化对象.方法”就可以调用我们提前设置好的函数。
  ES5中的构造函数有一些小问题,它的prototype属性是定义在函数外面的,那么我们调用构造函数就需要在定义prototype的语句之后进行调用,否则我们生成的实例化对象中就只有属性而没有函数方法。而在ES6中,新增了语法形式:class类,这是一种新的定义函数的语法,它的原理和ES5的原理完全相同,区别只是格式不同。
  接下来我们使用ES6写出和上面相同的效果:

class Fun2{
	constructor(name,age,sex){
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	f2(){
		console.log(this.name,this.age,this.sex);            	}
}

  在ES6中,我们将所有的构造函数都写在class中,在constructor中写入我们需要的数据,然后直接在下面写入需要的方法函数即可,它的功能与ES5相同,最终效果也相同。

const obj2 = new Fun2('李四',19,'女');
obj2.f2();

在这里插入图片描述
  很显然,ES6的语法更简洁,推荐大家使用ES6的语法格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值