JSON对象 es6 this指向

JSON对象
JSON.stringify 将 json或者json数组转换成字符串json
JSON.parse 是将 json 格式的字符串转换为 js 的对象或者数组
对象深克隆
var obj = {
a:10,
b:20,
c:{
a:10
}
};
var obj2 = JSON.parse(JSON.stringify(obj));
console.log(obj2);
obj2.c.a=20;
alert(obj.c.a);//10
1,对象的深克隆

​ 2,缓存的存储

​ 3,前后台数据传输解析
this 关键字 主要用于函数中 不同的场景下 指向不同
普通函数 window

		function fn(){
			console.log(this);
		}
		fn(); //window
	事件函数  指向事件源
		var btn = document.querySelector('button');
		btn.onclick = function(){
			console.log(this);//button  事件源
		}
	定时器 中也是window
		setInterval(function(){
			console.log(this); //window
		},1000);
	预保留this
		//事件函数中嵌套了内层函数,需要在内层函数中使用this得到事件源(this指向window)
		var btn = document.querySelector('button');
		btn.onclick = function(){
			var _this = this;
			setInterval(function(){
				console.log(_this);
			},1000);
		}
	this在对象的方法中,指向 调用这个方法的对象
		var  obj ={
			name:"小明",
			act:function(){
				console.log(this.name);
			},
			c:{
				name:"小红",
				b:function(){
					console.log(this.name);
				}
			}
		}
		obj.act();
		obj.c.b();
call()    apply()       bind()  可以改变this在函数中的指向
	 call
		 1,没有参数fn.call()  就相当于函数调用
		 2,有参数
		 	第一个参数,就是这个函数调用时的this指向,从第二个参数开始,会当做实参传入
	apply
		 没有参数:fn.apply() 相当于函数调用
		 有参数
		 	第一个参数是函数调用时的this指向,只有两个参数,第二个参数,必须是数组,会将数组解析出来,数组的每个元素都会当成一个实参传入
	 bind调用,返回一个函数副本,这个函数副本中的this指向,指向了bind调用时穿的参数
es6
	let声明变量
		1,不能重复声明  报错

let a=10;
let a=20; //报错
2,不存在预解析 不存在声明提前
console.log(b); //报错
let b = 20;
3,增加块级作用域 {}
{
let c=20;
console.log©; //20
}
console.log©;//报错
const 声明常量
1,声明的时候就必须赋值
const A; //报错
A=10;
2,一旦赋值之后 值不能改变
const A = 10;
A = 20; //报错
注意:常量名字 一般大写(全部大写),区别于变量
箭头函数
es6 新增的一种函数的简写形式
注意:只是函数的表达式 (函数的值)
var fn = (a,b)=>a+b;
alert(fn(2,3)); */
1, 函数 无参数 需要加() 占位
let fn = ()=>alert(1);
fn();
2, 函数只有一个参数 参数可以加括号也可以不加
let fn = a=>alert(a);
fn(3);
let fn = (a)=>alert(a);
fn(3);
3, 函数有多个参数 一定 要加括号
let fn = (a,b)=>alert(a+b);
fn(3,4);
4,如果箭头函数不换行 如果不换行。,默认return 那一行代码
let fn = (a,b)=>a+b;
alert(fn(3,4));
5, 如果函数有多行代码 这个时候不会自动return,如果需要有返回值,需要你手动return 且需要{}包裹多行代码
let fn = (a,b)=>{
console.log(a);
console.log(b);
return a+b;
}
console.log(fn(3,4));
6,箭头函数中的this关键字
箭头函数没有this指向,this取决于他所在的上下文(环境)
console.log(this); //window
let fn = ()=>console.log(this); //window
fn();

    document.onclick = function(){
        let fn = ()=>{
            console.log(this); //document
        }
        fn();
    }
		函数参数默认值
			 /*  function fn(a){
            // a=a||10;
            a = a==undefined?10:a;
            alert(a);
        }
        fn(0); */

      /*   function fn(a=10){
            alert(a);
        }
        fn();
        fn(2); */
        // 箭头函数也支持
		解构赋值  声明变量
			1,数组的结构赋值 
				// 数组的解构赋值  按照先后顺序来的
        var arr=[2,3];
        // var [a,b] = [2,3];
        var [a,b] = arr;
        alert(a); 2
        alert(b); 3
        // 如何交换两个变量的值
        var a=10;
        var b=20;
        [a,b]=[b,a];
        alert(a);
        alert(b);
			2,对象的解构赋值
				 // 对象的解构赋值  是按照  属性名 key 跟顺序无关
         var {a,b}={a:10,b:20};
        alert(a); 10
        alert(b); 20

        var {a,b}={b:20,a:10};
        alert(a);10
        alert(b);20
		模板字符串
			es新增 `` 表示字符串
1,字符串是可以换行的  默认" ''是不能换行的
2,在``字符串中可以是 ${变量},这个js会解析成变量,而不是字符串,不需要拼接可以直接在字符串中写变量
			 模板字符串解决问题:字符串拼接
        ${变量} 写在字符串中,js不会解析成字符串,当做变量来解析
        这个时候 字符串的 引号 要变成   ``
        `` 中的字符串是可以换行的
        默认的 "" ''不可以换行
		展开运算符  ...
			功能:可以将 某些特定数据类型 展开  如 数组、字符串、对象 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值