什么是面向对象
用对象的思想去写程序,就是面向对象编程
-过程式写法
-面向对象写法
例如:数组Array时间Date
1 | var arr=new Array(); //系统自带的对象,叫做系统对象 |
面向对象编程(OOP)的特点
抽象 | 抓住核心问题 |
封装 | 只能通过对象来访问方法 |
继承 | 从已有对象上继承出新的对象 |
多态 | 多对象的不同形态 |
面向对象的基本写法何组成
对象的组成
方法(行为、操作)–函数:过程、动态的
属性-变量:状态、静态的
创建第一个面向对象程序
对象下面的变量:叫做对象的属性
对象下面的函数:叫做对象的方法
为对象添加属性和方法 | |
---|---|
object对象 | |
this指向 | |
创建两个对象:重复代码过多 |
1 | var arr=[]; |
1 | var obj=new object();//创建了一个空的对象 |
工厂方式与构造函数
1 |
|
当new去调用一个函数:这个时候函数中的this就是创建出来的对象,而且函数的返回值直接就是this (隐式返回)
1 |
|
对象引用是什么和它的问题
1 | function CreatePerson(name){ |
原因:因为基本类型的比较,只要值相同就可以了;而对象类型的比较,值和引用都要相同才可以。p1.showName和p2.showName分别在不同的地址创建了对象,所以这里返回的是false。但是会造成很大的内存浪费
1 | var a = 5; |
面向对象之原型学习
原型:去改写对象下面公用的方法或者属性,让同样的公用的东西在内存当中只存在一份(目的是为了提高性能)
类比:原型就像css中的class一样 ,而普通方法就像CSS中的style一样
注意:原型prototype : 要写在构造函数的下面
普通方法的例子
1 | var arr = [1,2,3,4,5]; |
原型的例子
1 | var arr = [1, 2, 3, 4, 5]; |
类比css中style的优先级大于class,所以这里的优先级也是
1 | var arr = []; |
1 | var arr = []; |
工厂方式之原型
1 |
|
小结:面向对象的写法
1 | function 构造函数(){ |
传统的过程式编写选项卡
1 |
用面向对象封装通用选项卡
1 |