概述
对象是引用数据类型,可以同时保存不同类型的属性和方法,保存在堆内存中,有自己的空间和地址,通过地址找到对象.
对象的类型
对象是引用数据类型…
引用数据类型的存储方式
存放在堆内存中.
对象的作用
可以保存多种不同数据类型的属性和方法
对象的存放位置
对象保存在堆内存里面,每个对象都有自己的空间和地址,最终通过地址找到对象实例.
变量保存的是对象地址.
对象属性与方法的本质
就是变量与函数,在对象中叫做属性与方法.
基本数据类型只能保存单一类型的值
对象类型
1.内置对象
指ES提供的对象
开发者可以直接使用.
2.宿主对象
所有的BOM DOM都是宿主对象
3.自定义对象
开发人员自定义的对象
4.原型对象
每个函数都有一个原型对象,每个实例都可以访问到原型对象.原型对象用于存放一些公用属性方法让实例使用.
访问对象会执行的流程
首先会在对象自身中找属性或者方法,找到就执行,没找到就进入原型链找,不管是在哪一层原型,找到就执行,如果都没找到会在Object对象也就是原型链的终点结束.
objectSelf → 原型链 → Object
Object对象是所有原型的原型.所以Object之后没有原型了.
对象语法
一.创建对象
1.字面量创建对象
var obj = {
属性1: 值1,
属性2: 值2
}
特点:可以在花括号中直接初始化属性方法.属性方法用:接收值
如果需要创建大量对象,这种方式需要写大量代码,不推荐.
2.工厂方法创建对象
function App(形参值1,形参值2) {
const obj = new Object();
属性1= 形参值1;
属性2= 形参值2;
return obj;
}
const App = App(实参1,实参2)
特点:通过传参保证属性值的灵活性,批量生产对象比字面量的方法更简单.
但所有对象都是用构造函数创建,最后对象都是Object类,区分不开.不推荐.
3.构造函数
构造函数创建对象:
使用new调用.
构造函数的执行过程
- 创建一个新的对象.
- 将新对象设置为函数中的this,在构造函数中用this引用该对象赋值.
- 逐行执行代码
- 返回该对象
构造函数的类
调用构造函数会创建一个类,使用同一构造函数创建的对象属于一类对象
这些对象又叫该类的实例.
所有对象都是Object的后代,所有对象检查时都返回true
有了对象实例,才可以调用/操作对象
2.添加/修改属性值
对象.属性 = ‘值’
3.读取对象属性值
对象.属性
注:如果读取没有的属性,返回undefined
4.删除对象属性
delete 对象,属性
枚举对象成员
for(let i in obj){}
栈内存和引用数据类型
栈内存
栈内存用于存放基本数据类型,为每个变量提供一个独立的内存空间,变量之间的值不互相影响.
堆内存
堆内存用于保存对象,每创建一个对象实例,就会在堆内存中开辟一块空间,该空间有自己的地址.
接收对象的变量实际是接收的这个内存地址.