JavaScript面向对象(一)基础详解及封装

一、类和对象

1.1、类:类型的简称,数据类型的简称;是一个概念、代号,如人、电脑、飞机等等
1.2、对象:类的某个具体的实例,是一个实际存在的物体,如陈伟霆、dell电脑、波音747
1.3、类和对象,是面向对象编程的基础。

二、面向对象?

2、1概念:面向对象不是技术,而是一种处理问题的思路,一种编程思想。
2.2特点:

1、对零散数据的封装,避免了数据之间产生互相影响的情况。
2、提高代码的复用性。
3、降低代码之间的耦合性(依赖),提高代码健壮性。
4、提高项目的扩展性(软件开发ocp原则:开闭原则)。

2.3特征:
封装、继承、多态
2.4过程:

1、面向对象分析    OOA
2、面向对象设计    OOD
3、面向对象编程    OOP
4、面向对象测试    OOT

三、面向对象–封装

1、原始的封装模式——如下,模拟人的类型

var People = {
  name:"Tom",
  age:3,
  eat:function(){
      console.log(name + “吃饭了”);
  }
}

据这个类型的模板,来创建具体的实例对象,进行封装!

var People = {}
People .name = "Tom";
People .age = 3;
People .eat = function() {
    console.log(this.name + “吃饭了…”);
}

数据已经封装完成,将name、age、eat()描述一个人的属性特征和行为操作被封装在一起,也就是将零散的数据封装整合到一起方便程序中进行统一的管理和使用。

但是上面的封装方式使用的时候一定要注意适用范围

1.比较适用于程序中某个类型只存在唯一实例对象的形式。
2、不适合某个类型有多个对象的形式,多个实例书写方式就会很麻烦
3、实例和类之间没有关联关系、实例和实例之间没有关联关系

2、函数封装模式

function People(name, age) {
  return {
      name:name,
      age:age
  }
}

在这样的情况下,创建对象就会变得非常简单

var cat = People("Tom", 30);
var mouse = People("jerry", 35);

这样的优化,一定程度上降低了代码的复杂度,提高了代码的可用性。不过只是对上一种方式的封装,依然体现不出cat、mouse实例和People类型之间的关系
3、构造函数—–通过new关键字来创建对象
* 通过函数定义了一个类型,使用了 this.属性 这样的语法结构, 这个函数就被称为构造函数
* 构造函数:专门被用来创建对象的函数
定义类型的语法结构

function People (name, age){
  this.name = name;
  this.age = age;
  this.eat = function() {
      console.log(this.name + “吃饭了…”);
  }
}
var changsheng= new People("长生", 19);
var luoluo = new People("落落", 138);

通过new关键字创建的对象,就会有自己的一个constructor属性,指向的是创建自己的构造函数,通过这样的方式来反映类型和对象之间的关系。

console.log(changsheng.constructor); //People
console.log(luoluo.constructor);  //People

另一个对象操作符号instanceof验证类型和对象之间的关系返回值为布尔值

 console.log(changsheng instanceof People);//People类型 ? true
 console.log(luoluo instanceof People);//People类型 ?true

你可能感兴趣的:(JavaScript面向对象(一)基础详解及封装)