JavaScript基础强化笔记-对象
对象
object:属性的无序组合,每个属性存放一个原始值、对象或函数。
类
每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(interface),还要定义对象的内部工作。
编译器和解释程序都根据类的说明构件对象。
实例
程序使用类创建对象时,生成的对象叫做类的实例(instance)。
对类生成的对象的个数的唯一限制来自与运行代码的机器的物理内存。
ECMAScript 没有 正式的类
面向对象语言的要求
- 封装
- 聚集
- 继承
- 多态
对象的构成
- ECMAScript中,对象由特征(attribute)构成,特性可以是原始值,也可以是引用值。
- 如果特性存放的是函数,它将被看做为对象的方法。
- 否则该特性被看作对象的属性(property)
对象的应用
对象的创建和销毁都在JavaScript执行过程中发生,理解这种范式的含义对理解整个语言至关重要。
声明和实例化
var oObject = new Object()
var oStringObject = new String()
对象的创建方式是用关键字new后面跟上实例化的类的名字
如果构造函数无参数,可以省略括号
对象引用
在 ECMAScript 中,不能访问对象的物理表示,只能访问对象的引用。每次创建对象,存储在变量中的都是该对象的引用,而不是对象本身。
对象废除
ECMAScript 拥有无用存储单元收集程序(garbage collection routine),不必专门销毁对象来释放内存。
将对象的所有引用都设为null,可以强制性的废除对象
var oObject = new Object
oObject = null
对象的绑定
- 绑定(binding)即把对象的接口和对象实例结合在一起的方法。
- 早绑定(early binding)是指在实例化对象之前定义他的属性和方法。(ECMAScript不支持)
- 晚绑定(late binding)指的是编译器或解释器程序在运行前,不知道对象的类型。(ECMAScript 中的所有变量都采用晚绑定方法)
对象类型
- 在ECMAScript中,所有对象并非等同创建的。
- 一般来说,可以创建并使用的对象有三种:
- 本地对象
- 内置对象
- 宿主对象
本地对象
立于宿主环境的 ECMAScript 实现提供的对象
Object
Function
Array
String
Boolean
Number
Date
RegExp
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
内置对象
由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现
开发者不必明确实例化内置对象,它已被实例化了。
Global 对象
Math 对象
宿主对象
所有非本地对象都是宿主对象(host object)
由 ECMAScript 实现的宿主环境提供的对象
所有的BOM和DOM对象都是宿主对象。
对象的作用域
好像ES6已经改了 例如 let
、const
定义类或对象
使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象。
ECMAScript 拥有很多创建对象或类的方法。
工厂方式
function