在现在的社会上一些公司都是用面向对象的编程思想来解决问题。
1.什么是面向对象:
面向对象不是技术,而是一种处理问题的思路,一种编程思想。
面向对象,是将程序中的数据和功能进行封装,以达到代码复用性、低耦合、增强代码功能扩展。
面向对象已经被广泛应用于各种编程语言中,是当下流行的一种编程语言处理需求的理念。
面向对象的基础,就是类和对象的概念和使用!
javascript里面面向对象的封装
面向对象的特性:
1、对零散数据的封装,方便对数据进行统一的管理和支配,避免了零散数据可能出现的数据污染
2、提高代码的复用性【重复使用的特性】
3、降低代码之间的耦合【耦合:依赖】,提高代码的健壮性
4、提高项目的扩展性【软件开发的ocp原则:开闭原则】
面向对象的过程:
1、面向对象分析 OOA
2、 面向对象设计 OOD
3、面向对象编程 OOP
4、 面向对象测试 OOT
面向对象的特征:
1、 封装:将零散数据封装起来,进行统一的管理和支配
2、继承:通过不同对象之间的关联关系,来完成提升代码复用性和扩展性的目的
3、多态:运行的过程中,对象在不同的环境下回表现出不同的状态
面向对象使用范围:
1、不要在小效果上使用面向对象
2、不要在独立的效果上使用面向对象
3、通常情况下,在项目中进行公共效果的开发和批量数据的处理时,使用面向对象简化开发
1.原始的封装模式:通过JSON数据来模拟一种数据类型
代码如下:
var People = {
name:””,
age:0,
eat:function(){
console.log(name + “吃饭了”);
}
}
上面就是一个模拟的人的类型,正常情况下要根据这个类型的模板,来创建具体的实例对象!
var houZi = {}
houZi.name = “侯局长”;
houZi.age = 43;
houZi.eat = function() {
console.log(this.name + “吃饭了…”);
}
数据已经封装完成,将name、age、eat()作为一个人的属性和行为被封装在一起,也就是将零散的数据封装整合到一起方便程序中进行统一的管理和使用。
但是上面的封装方式使用的时候一定要注意适用范围
1. 比较适用于程序中某个类型只存在唯一实例对象的形式。
2.不适合某个类型有多个对象的形式,多个实例书写方式就会很麻烦,实例和类之间没有关联关系、实例和实例之间没有关联关系
2.函数封装模式
这一种情况下通过函数进行改进,函数通过返回一个JSON对象的形式来优化创建对象的复杂度,提高代码的复用性
function People(name, age) {
return {
name:name,
age:age
}
}
在这样的情况下,创建对象就会变得非常简单
var leaderGao = People(“高经理”, 30);
var chaiQianChang = People(“拆迁常”, 35);
这样的优化,一定程度上降低了代码的复杂度,提高了代码的可用性。不过只是对上一种方式的封装,依然体现不出leaderGao、chaiQianChang实例和People类型之间的关系。
3.构造函数
JavaScript提供了一种模拟面向对象的语法,通过函数的方式来模拟定义类型,定义好类型之后,通过new关键字来创建对象
备注:ES6以后提供了面向对象的语法结构!
定义类型的语法结构:
function People (name, age){
this.name = name;
this.age = age;
this.eat = function() {
console.log(this.name + “吃饭了…”);
}
}
此时,有了构造函数之后,我们对于创建对象有了新的看法
var jianChaJi = new People(“季检察长”, 50);
var chenHai = new People(“陈海”, 38);
我们重新审视创建的对象jianChaJi和chenHai
通过new关键字创建的对象,就会有自己的一个constructor属性,指向对象的构造函数,也就是我们定义的类型;通过这样的方式来反映类型和对象之间的关系
console.log(jianChaJi.constructor);
console.log(chenHai.constructor);
同样的,JS提供了另一个对象操作符号instanceof验证类型和对象之间的关系
console.log(jianChaJi instanceof People);
console.log(chenHai instanceof People);
这以上就是我对原生面向对象的理解,下一章我会谈一下原生JS里的Ajax操作