1.遍历对象的属性和方法:
第一种:
for in
遍历对象中所有 “可枚举” 的属性,包括自有属性和继承的属性
var obj={
name:"qianjiaji",
age:18,
height:180,
weight:120
}
for(var i in obj){
console.log(i)
console.log(obj[i])
}
第二种:
Object.keys(obj)
参数:要返回其枚举自身属性的对象
返回值:一个表示给定对象的所有可枚举属性的字符串数组
var obj={
name:"qianjiaji",
age:18,
height:180,
weight:120
}
console.log(Object.keys(obj))
第三种:
Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。
var obj={
name:"qianjiaji",
age:18,
height:180,
weight:120
}
console.log(Object.getOwnPropertyNames(obj))
第四种
Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性的键名。
var obj={
name:"qianjiaji",
age:18,
height:180,
weight:120
}
console.log(Object.getOwnPropertySymbols(obj))
第五种
Reflect.ownKeys(obj)
Reflect.ownKeys返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。
var obj={
name:"qianjiaji",
age:18,
height:180,
weight:120
}![在这里插入图片描述](https://img-blog.csdnimg.cn/20200303205902887.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phbWVzSEtL,size_16,color_FFFFFF,t_70)
console.log(Reflect.ownKeys(obj))
2.对象的存储
内存:由四部分组成,栈内存 堆内存 代码段 数据段
对象都是一个引用,栈内存里面保存的是一个地址,这个地址指向堆内存,堆内存中保存着对象的属性和方法,方法指向的是代码段
两个个对象之间是相互独立的
结构如下图所示: