JS对象语法,遍历

**_对象_**

**对象数据类型**

是一个复杂数据类型

对象:一个盒子,承载一堆数据

本质:抽象的描述一个事物

对象创建方式:

区别:

1、字面量可以在创建的时候直接添加一些数据

==>数据是以键值的形式出现

==>key: value 的形式

==>key 就是这个数据的名字

==>value 就是这个数据的值

==> 多个属性使用逗号(,)分隔

1:字面量创建

=>var o={ }

2:内置构造函数创建:

==>js 提供了一个内置构造函数 object

==> var o=new object()

3: 字面量创建直接添加成员

var o={

//成员

//num str 叫对象的属性

num:100

str:'100'

//fn j 叫对象的方法

fn:function (){

console.log('方法')

}

}

**对象的操作语法**

可以互相用

语法:  

1.点语法

增:添加一个成员

==>语法:对象名.成员名=值

删:删除一个成员

==>语法: delete 对象名.成员名

改:修改一个成员

==>语法:对象名.成员名=值

==>原先由就修改,没有就添加

查:查询某个成员

==>语法: 对象名.成员名  

==>当访问的对象里面没有成员时,会打印一个 undefined  

 2.数组关联语法·

增:添加一个成员

==>语法:对象名['成员名']=值

删:删除一个成员

==>语法:delete 对象名['成员名']

改:修改一个成员

==>语法:对象名['成员名']=值

==>原先由就修改,没有就添加

查:获取一个成员的值

==>语法: 对象名['成员名']

**区别**

1、点语法

==>不能使用变量

==>不能拼接字符串

==>点的后面是什么,这个成员名称就是什么

2、数组关联语法

==>可以使用变量

==>可以拼接字符串

var obj={}

var name='abc'//声明变量 name 并赋值为'abc'

//添加一个叫做 name 的成员,和 name 变量没有任何关系

obj.name='aaa'

//当中括号里面书写变量时,会把这个变量的值当作这个成员名称

//因为 name 变量的值为'abc' obj[name]等价于 obj['abc']

报错 //age is not defined

//同样是使用一个变量,使用的时 age 的值来当作 obj 的成员,但是 age 没有定义

obj[age]=123

console.log(obj)

**注意**

因为对象数据类型是一个复杂数据类型在控制台打印的时候,会出现两种情况

1、当前、最终的样子

==>在控制台上,不展开对象数据类型的时候是当前的样子

==>在控制台上,展开对象数据类型的时候是最终的样子

**解决问题**

1、 直接打印想看到的值

2、console.table() 以表格的形式打印

**循环遍历**

==>成员名可以访问对象里面的每一个数据

==>所有的名字不一定存在规律

==>obj 里有多少成员执行几回

==>key 分别是循环每一次对象的成员名称(字符串名称)

for in 循环

==>大部分时候用来遍历对象

==>语法:

for(var 变量 in 对象){

重复执行的代码

}

//不规律

var obj={

name:'tt'

age:11

}

for in 遍历对象

//条件判断 key in obj

for (var key in obj){

console.log(key)

//利用 key 和数组关联语法来获取每一个成员的值

console.log(obj(key))

}

判断一个成员是不是在这个对象里

==>使用 in 语法

==>成员名 in 对象名(以字符串的形式书写)

==>对象内的每一个成员名必须是字符串

var obj={

name:'tt'

age:11

}

console.log(name in obj)//false

console.log('name' in obj)//true

console.log(age in obj)//报错

**拓展**

window 的 name 属性

==>是一个全局天生自带的属性

==>作用:在 iframe 标签和 name 属性合作进行跨域的

==>被固定为字符串类型

==>不管 name 赋值为什么类型,都会自动转换成字符串

name=100

console.log(typeof name)//string

**数据类型存储上的区别**

数据类型存储,就是存储在浏览器分配给 js 存储的一段空间

浏览器的一段存储

1、栈内存

==>存储机制,先来进栈底

2、堆内存

==>存储机制,随机存储

数据类型存储

1、基本数据类型

==>直接把值存储在栈内存里面

2、复杂数据类型(地址数据类型、引用数据类型)

==>把数据放在堆内存中

==>把地址放在栈内存的变量里面

代码的执行

==>直接访问栈里面的内容

==>访问某一个对象里面的成员

==>因为对象本身在堆内存里面

==>需要利用栈里面的地址,找到堆里面的空间

==>然后去访问内部的成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值