1、什么是面向对象思想(编程思想角度)
(1)面向过程:关注的是解决问题的步骤
优点:在小型程序中代码量比较少,开发成本低
缺点:在构建大型项目是,代码逻辑不易捋顺、代码量大、代码编写繁琐,增加开发难度
(2)面向对象:关注的是解决问题所需要的对象(内容、角色),然后根据业务逻辑按一定的规则调用这些对象的相关功能、方法
优点:有弥补了面向过程编程思想的不足
缺点:在小型程序中不如面向过程思想灵活、方便
2、什么是面向对象语言(编程语言角度)
(1)什么是对象:万事万物皆为对象每一个具体的物品、实例就是一个对象:new Number()
(2)几个重要的概念:
类
对象(实例):属性(对象的特征)方法(对象的行为)
封装
继承
多态
3、js和面向对象的关系
Js是基于对象的语言,但是可以使用“面向对象”的思想让这个语言模拟java之类的面向对象语言
4、js如何创建对象?从一个“模板”(类、函数)那里创建出一个个具体的“东西”(对象)。如:从月饼模板中创建出月饼
①直接创建 优势:快捷、直观、方便
劣势:需要创建多个对象时,代码冗余
![719a74a38fc3f0624c8f1706ea8ac8dd.png](https://i-blog.csdnimg.cn/blog_migrate/7bde419de6fa3cf992a132795f92ca78.jpeg)
②使用函数创建(工厂模式) 优势:解决了代码冗余问题
劣势:无法区分该对象的类型(如:系统类 型,number是Number()创建出来的,但是自定义类型无法获取到)
![5f0c855b093774c1a67642582577e490.png](https://i-blog.csdnimg.cn/blog_migrate/753772df2f65940fb93c0edce3ead08b.jpeg)
③使用构造函数(函数名首字母大写)
优势:解决了获取对象类型的问题,使用构造函数创 建的对象自带一个constructor,通过该属性获取对象的类型(还可以使用instanceof检测对象是哪个类型的实例:(person instanceof Person),返回一个布尔值)
劣势:内存占用空间有点大(相对来说)
![f8c4c57fcc01852da0c9097ac5233c67.png](https://i-blog.csdnimg.cn/blog_migrate/ce457e291554cf581cd01ad32e451718.jpeg)
(2) 工厂模式和构造函数创建函数的区别
1.在函数中没有显示的创建对象
2.直接把属性、方法赋值给了this指针
3.没有return语句
4.使用构造函数创建出来的对象可以识别这个对象属于哪一种类型
(3) 普通函数调用和构造函数调用的区别
必须使用new操作符来创建出来的对象,如果像调用普通函数那样创建对象,就是在全局作用域中调用函数了,this指针会指向window对象
5、如何在js中使用面向对象
(1)访问对象的属性
1.点语法(.)和[ ]访问某一个属性
使用点语法访问属性,点后直接跟属性名
使用[ ]访问属性,[ ]里属性字符串必须是字符串类型的数据 或 保存属性名字的字符串变量
2.使用for.....in....遍历对象的所有属性
for (var property in per1) {
console.log(property+"="+ per1[[property]);
}
3.删除属性:delete box1.name;