1 .json序列化的时候,序列化的对象尽量避免循环依赖,子类不定义与父类相同名称的成员,避免定义非成员变量的getter、setter方法
1 .出现循环引用的时候算是bug么?要怎么处理
2 .webpack里面也会有这种情况,循环依赖a-b-c-a
3 .对象存在循环引用的时候,打印不会出现栈溢出,深拷贝的时候,才会的导致栈溢出
1 .定义了引用类型的变量后该变量存的是堆内存的地址,通过地址访问堆内存的数据,从而产生了引用。而基本数据类型定义后存储的是数据值,不需要引用
2 .在js中对两个引用类型使用 === 判断是对两者的地址进行判断
3 .所以判断是否存在循环引用,可以简单定义为对象内部的属性是否和对象本身的地址相同
1 .去除对象中涉及到的循环引用的属性.消除循环引用JSON.decycle方法可以解除循环
2 .将循环引用中的一个对象缓存起来,以避免重复序列化或者创建
使用for...in可以遍历js对象的属性,用法如下:for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
for (变量 in 对象)
{
//在此执行代码
}
“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
示例:
for (var sProp in window) {
alert(sProp)
}
以上例子会弹出window对象中的所有属性
js循环遍历对象的方法
var array = {
'key1':1,
'key2':2
}
for(let key in array){
console.log(key + '---' + obj[key])
}
第二种方法
const obj = {
id:1,
name:'zhangsan',
age:18
}
console.log(Object.keys(obj))
console.log(Object.values(obj))