1、面向过程:
关注功能如何实现,越复杂越难
2、面向对象:
关注是谁来做这件事,越复杂越简答
优势:团队协作开发
用面向对象思想解释汽车 :有轮子,烧汽油,交通工具,有颜色,归为一类,这一类东西,就叫做汽车。
理解:面向对象就是把具有相同特征的内容归为一类,把它封装,再把描述性的特性挂在这个类的原型下 ,这个编程方式就叫做面向对象。也就是封装函数,即归类。
3、构造函数 :
构造对象的函数。
4、new : 一元运算符,专门运算函数
1.使用new运算符之后,函数调用可以不加括号,加括号的目的就是为了传参。
2.this变为带函数名的对象。
3.使用new创建函数,返回值默认就是带函数名的对象。
4.new完之后:
(1)如果return后面为简单类型,那么返回值仍然是默认的带函数名的对象。
(2)如果return后面为复合类型,那么返回值就是return后面的复合类型。
5、面向对象三大特性 :
1.抽象 :把具有相同特征的内容抽离出来
2.封装 :包在一个函数中
3.继承
1.工厂方式(构造函数):
6、原型:
在函数创建的时候,自身带着的一个属性,这个属性的值为对象。
如果实例化对象上没有某个属性或者方法,那么会去构造函数下的原型下去查找有没有这个方法。
7、原型链 __proto__:
只要是实例化的对象,就有原型链。它是实例化对象和构造函数原型的桥梁。函数本身也是一个实例化对象,所以也有这个属性。构造函数的原型下的属性或者方法,只给它的实例化对象使用(如果没有原型,就走__proto__.construstor)。
8、实例化对象.__proto__ === 构造函数的原型
9、包装对象:
基本数据类型本身不是对象,但是却可以通过属性操作的方式去调用某些方法,为什么?
当使用原始类型的值(string、number、boolean),在调用对应属性和方法的时候,内部会自动转成对应的对象。隐式创建的这个对象,就成为包装对象,包装对象使用之后立即被销毁
10.对象的遍历:for...in...
遍历自身和原型上的属性。(特别注意一下,原型的也会被遍历)
数组也可以用for...in...,会打印出数组的key(就是下标)
11.hasOwnProperty
查看属性是不是对象自身的,不会查找原型上的属性。
12.instanceof
二元运算符。用来验证对象和构造函数的关系。
13.继承
1>拷贝继承:
第一步:.类的继承(属性继承):在自身的构造函数内部调用父类并且修改this
第二步:拷贝继承(继承方法)
for in父类原型的方法。这样操作就是简单类型的赋值,而不是符合类型赋值,所以不会相互影响。
2>原型继承:
第一步:还是和拷贝继承一样,先继承属性
第二步:方法继承
1、首先new一个新的构造函数
2、要继承的父类原型赋值给这个构造函数的原型:赋址操作,引用一个地址
3、然后将子类的原型等于这个新的构造函数。
14.valueof:获取对应类型的原始值
15.constractor : 查看某个对象的构造函数
这个指向容易变(在赋址的时候就会变),就算变了并不影响代码执行,它只是一个辅助作用。