大家好,我是逆战班小丁,今天来给大家简单的说说面向对象的编程思想。
面向对象是一种编程思想,是一种代码的书写格式;使用面向对象之前为了简化代码,我们是将程序封装为函数的形式来调用,此时函数会有一些小问题:函数内部定义的局部作用域变量,函数外部无法直接调用,并且在函数调用使用时,会占用大量的系统内存,容易造成数据溢出数据泄露,容易被黑客攻击,复杂的程序封装会封装成其他形式,使用面向对象的方式来封装程序。
那么什么是面向对象的方式呢?
我们先来说一下对象的优点,首先,对象中,可以定义并且存储多个数据单元以及所有JavaScript支持的数据类型,其次对象中,调用具体的数据很方便,调用数据时,不用考虑数据的顺序,只要键名/属性输入正确即可,还有对象中,可以定义函数,还可以通过函数的this,方便的调用对象本身的数据,这些优点使我们使用面向对象编程思想的前提。
面向对象的基本思路是:创建一个对象,给这个对象,添加上属性和属性值,还有函数等方法,之后通过操作这个对象,来完成需要的效果,比如:
function createObj(){
const obj={};
obj.name='张三';
obj.age=18;
obj.addr='北京';
obj.sex='男';
obj.funNameAge=function(){
console.log(this.name,this.age);
};
obj.funNameAddr=function(){
console.log(this.name,this.addr);
};
obj.funNameSex=function(){
console.log(this.name,this.sex);
};
obj.funAll=function(){
console.log(this.name,this.sex,this.age,this.addr);
};
return obj;
}
const obj=createObj();
console.log(obj);
obg.funAll();
obj.funNameAge();
我们是通过函数的方法来来创建对象,然后将这个函数赋值给一个对象,此时我们再调用这个对象时,就可以直接调用函数中存储的数据。
接下来介绍一下工厂模式。
所谓的工厂模式,是一种书写函数的语法形式,语法规范,就像工厂中的流水线一样,按照步骤来执行需要的操作:
步骤1:创建对象;
步骤2:给对象定义属性和属性值;
步骤3:给对象添加方法;
步骤4:定义对象为返回值。
标准的工厂模式会有对应的参数。
function createDumpling(pi,mian,xian){
const dumpling={};
dumpling.pi=pi;
dumpling.xian=xian;
dumpling.mian=mian;
dumpling.huomian=function(){
console.log(this.mian);
};
dumpling.huoxian=function(){
console.log(this.xian);
};
dumpling.bao=function(){
console.log(this.pi,this.xian,this.mian);
};
return dumpling;
};
const baojianzi1=createDumpling('薄皮','白面粉','猪肉大葱');
const baojianzi2=createDumpling('厚皮','玉米粉','鱼香肉丝');
console.log(baojiaozi1);
baojiaozi1.huoxian();
baojiaozi1.huomian();
使用工厂模式我们就可以给构造函数中添加实参了;
面向对象编程的优点:
优点与函数的优点类似:高内聚,低耦合;
高内聚:将所有需要的程序都定义封装在对象内,对象中存储所有需要的属性,所有需要的方法;
低耦合:尽量减少特殊程序的执行。
面向对象编程的特点:
抽象:通过描述对象共有的特点(属性和属性值),来形同一个对象,这个对象不是一个非常具体实例的内容,是一个抽象化的实例,可能指代很多内容,比如制作饺子,制作包子,制作馅饼,制作馅窝头等,再比如,有皮,有汁,味甜,可以是西瓜、橘子、套、夹心糖等;
封装:将所有的程序都定义在一个对象中。