1、什么是面向对象?
a.首先,js面向对象是一种思想;
b.其次,遵循万物皆对象的准则;程序中的关键模块都可以视为对象,对象都是由属性和方法组成,属性可以理解为对象的特征,是静态的,方法可以理解为对象的行为,是动态的;
c.面向对象会使用对象的属性和方法,它不关注内部的细节和过程;同时也会构造对象。
d.在js中,所有的对象可以分为普通对象和函数对象。而Object ,Function 是JS自带的函数对象。凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。
2、面向对象好处
a、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
b、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
c、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
d、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
3、面向对象的三大特征
a.封装;
b.继承;
c.多态;
4、构造函数是什么?
由function关键字声明 , 用来指实例化的对象, 创建对象的时候调用构造函数
5、构造函数的执行过程
(1).先new一个实例
(2).将实参传递给形参
(3).用this动态的往构造函数中添加属性和属性值
(4).将new的实例赋值给变量
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
}
var person=new Person(‘faker’,23,‘电竞’);创建对象的时候调用构造函数
6、构造函数的使用注意事项
1.由于每个对象都是由new Person创建出来的,因此每创建一个对象,函数sayHi都会被重新创建一次,这个时候,每个对象都拥有一个独立的,但是功能完全相同的方法。
2.全局变量增多,会增加引入框架命名冲突的风险,代码结构混乱,会变得难以维护
7、什么是原型?
指构造函数 创建时 默认创建一个原型属性; 原型
神秘对象就是构造函数的 “原型属性”
, 简称原型 (构造函数的原型)
神秘对象针对构造函数创建出来的对象称为 “原型对象”
, 简称原型 (对象的原型)
8、原型的作用是什么?
1.数据共享,节省内存空间,2.为了继承
9、如何获取原型(2种方式)
function p(){}
var one=new p();
①console.log(Object.getPrototypeOf(one)) 官方写法
②console.log(one.proto) 不会报错,但不推荐使用
③console.log(one.constructor.proto);
10、原型的使用方式(2种)
①利用对象的动态特性给原型对象添加成员(属性、方法)
②直接替换原型对象:对象.prototype里面的prototype其实就是对象的一个属性,所以是可以修改替换的。