javascript 中对象的概念和特点

一、对象的概念和特点

1.对象:是一种复杂数据,是数据的打包方式

  无序集合,object对象,花括号形式

  •     以键值对的形式存在,键和值一一对应,使用冒号连接,键值对之间使用逗号隔开
  •     键:key,要遵守变量的命名规则,一个对象中不允许出现重复的键
  •     值:value,就是正常数据

    使用场景:一般用来打包非同类但属于同一个个体的数据

              一个班级中某一个学生的所有信息姓名,

              性别,年龄,手机号,住址

  • 有序集合,array对象,中括号形式
  • 数据之间默认以索引的形式,进行标记,索引从0开始,到length-1
  • 使用场景:一般用来打包同类数据
  •             一个班级所有学生的姓名
  •              姓名,姓名,姓名

 2.特点:

  • 提升了数据的查找速度
  • 提升了数据的传输速度

3.本质:键值对

    • 键和值成对出现,键和值使用冒号连接,键值对之间使用逗号隔开,使用花括号做包裹
    • {name:"admin",age:18,sex:"男"}

 4.意义

    • 存储数据
    • 编程(面向对象编程)

二、对象的创建

  1. 字面量:var obj = { }
  2. 构造函数:var obj = new Object()

三、对象的操作语法

  1. 点语法:当对象的键为具体的值时
    • 获取对象属性:obj.name
    • 设置对象属性:obj.age = 18
    • 删除对象属性:delete obj.name
  1. 中括号语法:当对象的键为不具体的值,为变量中的值时
    • 获取对象属性:obj[key]
    • 设置对象属性:obj[key] = "hello"
    • 删除对象属性:delete obj[key]
    • key为变量

四、对象的遍历

  1. for-in语句 

var obj = {
  name:"admin",
  age:18,
  sex:"男"
}

for(var key in obj){
  // 对象的键
  console.log(key)
  // 对应键的值
  console.log(obj[key])
}

五、数据类型分类

  1. 基本类型(值传递):string,number,boolean,undefined,null
    • 只占用了栈,没有使用堆
    • 拷贝时,只拷贝值。值就是地址,地址就是值,等同于完全拷贝(深拷贝)
    • 也叫:值传递的数据
  1. 复杂类型(引用传递):object,function
    • 变量名存在栈中,数据存在堆中
    • 拷贝时,默认只拷贝地址。地址是地址,值是值,浅拷贝
    • 也叫:引用传递的数据

六、内存的栈堆

  1. 栈:变量名,地址,空间相对较小,稳定,不可修改
  2. 堆:数据,空间相对较大,可以修改
  3. 栈和堆的关系:一一对应,能多对一,不能一对多
    • 栈中保存了堆的地址
  1. 栈堆的存取规则(了解)
    • 栈的存取规则:先进后出
    • 堆的存取规则:先进先出

七、深浅拷贝

  1. 浅拷贝:拷贝的是地址,修改拷贝之后的数据会影响拷贝之前的数据
    • 复杂数据(引用传递)默认浅拷贝
  1. 深拷贝:拷贝的是值,不拷贝地址,修改拷贝之后的数据不影响拷贝之前的数据
    • 基本数据(值传递)默认深拷贝
    • 深拷贝复杂数据:遍历要拷贝的复杂数据,解析出每个键和值,逐个拷贝值
      • 简单深拷贝:只深拷贝一层或若干层的复杂数据的值
var obj1 = {name:"admin", age:18}
// 浅拷贝
var obj2 = obj;
obj2.name = "root"
console.log(obj1)			// {name:"root", age:18}
console.log(obj2);		// {name:"root", age:18}
console.log(obj1 === obj2);		// true

// 深拷贝
var obj3 = {};
for(var i in obj1){
    obj3[i] = obj1[i];
}
obj3.name = "root";
console.log(obj1)			// {name:"admin", age:18}
console.log(obj3);		// {name:"root", age:18}
console.log(obj1 === obj3);		// false

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值