面向对象的编程思想
引言
在之前的JavaScript学习中,笔者常常为了实现一个功能而去编写并调用函数,这种按照过程需要来完成程序的定义和执行的思路,称为面向过程的编程思想。使用这样的编程思路编写相同需求的模块,虽然可以将程序封装为函数以减少代码,但是不同模块的子级标签都需要分别获取以传参,所以还是有许多不便之处。跟随逆战班学习,我了解了另一种编程思路——先封装好面向对象的程序,在需要时直接调用执行即可,这样的思路被称为面向对象的编程思想。
为什么要面向对象
函数的缺点
除笔者引言中所述的亲身体会外,直接调用函数编程还存在一些局限性:
1.函数内部定义的局部作用域变量在函数外部无法直接调用
2.函数调用占用大量系统内存,易造成数据溢出泄漏,易遭到攻击。
3.函数仅封装了一些模块化的功能。
为了解决这些局限性,JavaScript开启了一种新的面向对象编程思路。
对象的优点
作为复杂数据类型的一种,对象相较于字符串和数组有着一系列优点:
1.对象中可以定义并存储多个数据单元以及所有JS支持的数据类型
2.在对象中使用属性名即可调用具体数据,不必考虑数据的顺序。
3.可以在对象中定义函数,并通过函数的this很方便地调用本身数据。
基于以上3个优点,面向对象成为了我们编写JavaScript程序的一个绝佳选择。
怎样面向对象
面向对象的基本思路
与面向过程不同,我们在以面向对象的思想进行编程时,往往会给这个对象添加上属性和属性值以及函数等方法,再通过操作这个对象来完成需要的效果。具体实现步骤我们可以这样写:
//先通过函数方法来创建对象
function createObj(){
create 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.funSexAge = function(){
console.log(this.name , this.age);
}
obj.funAll = function( ){
console.log(this.name , this.sex , this.age , this.addr);
}
//返回这个创建好的对象
return obj;
}
//调用函数,函数创建对象并作为返回值,变量中存储的就是函数创建的对象
const obj = createObj();
//可以通过调用obj中存储的对方的方法来实现功能
obj.funAll();
总结
面向对象编程将所有程序都定义封装在对象内,尽量减少了特殊程序的执行,具有高内聚、低耦合等优点。使用面向对象将会大大提高我们编程的效率和代码的可读性,因此,笔者在此处强烈推荐这一编程思想。
希望这篇博客对你有帮助,也欢迎读者友善地指出错误并提出建议。