JavaScript面向对象

一、面向对象

0x1 基本概念

对代码的一种抽象,对外统一提供调用接口的编程思想,基于原型的面向对象方式中,对象(object)则是依靠构造器(constructor)利用 原型(prototype)构造出来的。
1、面向对象的名词解释

2、闭包
闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数)
作用:1.读取函数内部变量。2.让局部变量一直存在在内存中
优点:有利于封装。可以访问局部变量
缺点:内存占用浪费,内存泄漏

变量与作用域

0x2 对象声明的方式

1、字面式声明

2、构造函数声明

3、构造方法声明对象

4、工厂方式声明对象
构造方式不会显示创建对象将属性赋值给 this 不要 return 对象
工厂方式在方法内部创建 object 对象返回 object 对象,属性和方法都是赋给object对象

5、原型模式声明对象
原理:函数本身声明为空内容,利用 prototype 定义-些属性及方法。
让所有实例化的对象都拥有它包含的属性及方法。

6、混合模式
构造模式 + 原型模式

0x3 对象的遍历

如果是构造函数,必须实例化之后才可以遍历对象。

对象的数据存储方式

0x4 封装

封装(Encapsulation):把对象内部数据和操作细节进行隐藏
大多面向对象的语言都支持封装的特性,提供了 private 关键字来隐藏某些属性或方法,用来限制被封装的数据或者内容的访问,只对外提供一个对象的专门访问的接口。
JavaScript中可以通过闭包实现封装,函数内部声明的变量外部是访问不到的。
公有与私有内容的区别是:能否在对象外部被访问,类似于作用域。