标签:apply() cdc 使用 strong 定时器 pac div 事件绑定 事件
1.let 与 const 定义变量
let 多用于定义 基本数据类型 以及 循环中
const 多用于定义 引用数据类型
特点:定义的变量名称不能重复
在 { } 和 循环中定义,只能在 { } 和 循环中使用
let会建立独立的,存储不同的,相互不冲突数据的变量
const定义的变量,不能重复赋值,不能修改存储的数据
2.箭头函数(是函数的另一种语法形式)
const fun = function(){} 普通函数 const fun = ()=>{} 箭头函数 将匿名函数的部分,从 function(){} 写成 ()=>{} 的形式 如果函数只有一个参数,可以不写() const fun = function(e){} 普通函数 const fun = e => {} 箭头函数 如果执行体中只有一行代码,可以不写{} const fun = e=>{console.log(e)} 普通箭头函数 const fun = e=> console.log(e) 不写{}箭头函数
3.箭头中的this指向
(1)普通函数的this指向
声明式 --- window
赋值式 --- window
forEach循环 --- window
定时器,延时器 --- window
对象中的函数 --- 对象本身
事件绑定事件处理函数 --- 绑定事件的标签
(2)箭头函数的this指向
父级程序的this指向
如果父级程序有this指向(父级程序也是函数),this指向的就是父级程序的this指向
如果父级程序没有this指向(数组,对象....),this指向的是window
4.改变this指向的三种方法
const obj1 = { name:‘张三‘, age:18, sex:‘男‘, } const obj2 = { name:‘李四‘, fun2 : function(){ console.log(this); } }
(1)call()方法
语法: 函数.call(参数1,其他参数....可以是多个或者没有 )
fun3.call(obj1,‘李四‘,20,‘女‘);
(2)apply()方法
语法: 函数.apply(参数1,参数2) 只有两个参数
fun3.apply(obj1 , [ ‘王五‘ , 20 , ‘不知道‘ ])
(3)bind()方法
语法: const 变量 = 函数.bind(参数1);
bind方法,不是立即执行函数,而是定义生成一个新的函数 新生成的函数,this指向是参数1 新生成的函数,形参是原始函数fun3的形参 const fun4 = fun3.bind(obj1); fun4(‘王二麻子‘ , 100 , ‘不详‘);
总结:
call apply 都是立即执行函数
参数1,都是改变的this指向
其他参数,是原始函数的形参(可以有,也可以没有)
bind 不是立即执行函数,是生成一个新的函数
参数1,是改变的this指向
5.立即执行函数 (在定义函数的同时,立即执行这个函数)
语法:
(封装的函数)()
!封装的函数()
~封装的函数()
这三种语法没有区别,爱用哪个用那个
定义函数 function fun(){console.log(123)} 调用函数 fun(); 立即执行,在定义的同时,立即执行函数 ( function fun1(){console.log(123)} )() 立即执行函数,并没有真正的定义真个函数 没有办法正常的再次调用这个函数 fun1(); !function fun1(){console.log(123)}() ~function fun1(){console.log(123)}()
逆战班
标签:apply() cdc 使用 strong 定时器 pac div 事件绑定 事件
原文地址:https://www.cnblogs.com/sxk053788/p/12732257.html