今日总结521
作者:互联网
注意:if --else :三目/三元
当条件一不满足,进入else的时候。变相在else
上加了上个条件的反条件;
对象。一堆键值对的集合(无序的)
严格写法:JSON写法; 键名加上引号;最后一个‘,’好不写。
in 判断 里面有没有某个键值对。判断的是键名 eg: ‘name' in obj;
判断数组的时候是判断其下标是否存在。2 in arr。
将对象转换成字符串JSON.stringify()-----------------处理前端数据,转换成字符串。发向后端;
对象方法不会被转换;
//JSON.stringify(obj,['name','number'],4) canshu1:obj,canshu2:过滤的对象,canshu3,换行的空格数。
JSON.parse(str)【处理后端数据,转换为js对象,用于前端渲染】
对象的增删改查:1obj.name 2 obj['name'] 3obj[name] var name = 'name';
shan delete obj.name gai obj.name = '.....' cha obj.name
for in 是遍历数组的。得到的是key; obj[key]。必须这样写,因为此时的key是变量。
Object.keys().得到的是一个键名的数组集合;
Object.values().得到的是一个键值的数组集合;
引用类型和基本类型 数据 。。
基本类型是值类型。他们拷贝的是值。拷贝后互不相干。比较的也是值。00000
eg:undefined , Null , String , Number
,Boolean , 。。。
引用类型的值(引用的是地址),拷贝的也是地址,比较的也是地址。
注意:核心是地址;
eg:object . Array..///
堆和栈是两种不同的内存区域:
堆:(heap) 栈:(stack);
简单说 :值类型引用的类型变量本身分配在栈中分配内存。
引用类型的变量在堆中分配内存;
symbol 是ES6中新添的数据类型;
独一无二的symbol;
一个参数。类似于备注。
symbol无法遍历得到。
对象的合并;
浅层拷贝 ---- 拷贝的是地址
方法:Object.assign()。
无限参数,第一个是target(目标对象)后面是你想把他们合并的对象。
eg:var obj ={name:'zs',age:20,height:180}
var obj1=Object.assign({},obj);
简单的for --in ;
eg:for(let key in obj){
obj1[key]=obj[key]}
深层拷贝 ====拷贝的是值;;
for in + 递归实现:
eg:function kaoB(obj){
var obj1 = obj instanceof Array ? [ ] :{ };
for(let key in obj){
obj1[key] = typeof obj[key] ==='object' ? kaoB(obj[key]) : obj[key] }
return obj1; }
还可以通过JSON方法实现:
思路是把对象转化成字符串;此时他就是一个值而已对他进行拷贝 就变相是等价于深度拷贝;拷贝完后吧新的字符串转换成对象即可;
对象中的this指向问题:
谁调用的包含this的函数(方法),this就指向谁:
形参不能为this:
发
标签:总结,obj,name,对象,eg,521,key,今日,拷贝 来源: https://blog.csdn.net/haiTongZhouyj/article/details/90414547