JavaScript基础07- 对象简介

面向对象概述

对象简介

JavaScript中的对象其实就是生活中对象的一个抽象。在使用上,对象是一组无序的相关属性和方法的集合。对象的作用是:封装信息。比如,我们保存一个值时会用变量,保存多个值时会用数组,但是我们讲过,数组中最好存放数据类型一致的数据。所以,如果我们需要封装多个类型不一致的数据时,可以使用对象。对象具有特征(属性)和行为(方法)。

由此,对象里面的属性均是键值对:

  1. 键:相当于属性名。
  2. 值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型,对象等)。

当对象的属性值为函数时,我们称其为方法。方法用来表示对象的功能,也可以类比为现实生活中的行为。

var obj = {
  sayHi: function () {
    console.log(this.name);
  }
};
 console.log(obj.sayHi);  //没加括号,就是获取方法
    console.log('-----------');
    console.log(obj.sayHi());  //加了括号,就是调用方法。即:执行函数内容,并执行函数体的内容

同样的,对象中的属性值也可以一个对象。


image.png

对象的分类

对象的分类
内置对象:
由ES标准中定义的对象,在任何的ES的实现中都可以使用比如:Object、Math、Date、String、Array、Number、Boolean、Function等。

宿主对象:
由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象。比如 BOM DOM。比如console、document。

自定义对象
由开发人员自己创建的对象
通过 new 关键字创建出来的对象实例,都是属于对象类型,比如Object、Array、Date等。

基本类型和引用类型数据存储的区别

基本类型又叫做值类型。值类型是简单数据类型,基本数据类型在存储时,变量中存储的是值本身,因此叫做值类型。而引用类型也叫复杂数据类型在存储时,变量中存储的仅仅是地址(引用),因此叫做引用数据类型。

基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。(我们再次强调一下,String其实是与基本数据类型相似的不可变引用类型)
引用数据类型(引用类型):Object 对象。

下面,我们来介绍两个概念:堆和栈

  1. 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;

2、堆(操作系统): 存储复杂类型(对象),一般由程序员分配释放, 若程序员不释放,由垃圾回收机制回收

基本数据类型存储

基本数据类型的值直接保存在栈内存中,值与值之间是独立存在,修改一个变量不会影响其他的变量。

对象存储

  1. 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。
  2. 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间。变量保存的是对象的内存地址(对象的引用)。换而言之,对象的值是保存在堆内存中的,而对象的引用(即变量)是保存在栈内存中的。
  3. 如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响。对于引用类型的数据,赋值相当于地址拷贝。两个变量时同一个引用时,他们的值是同一个值。也就是同一个对象。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。