文章目录
前言
在前文我们介绍了ES6中的let,const……今天书接上回,继续说ES6中的相关知识点吧!
一、箭头函数
1. 基础语法
语法:() =>{} // ():函数 =>:必须的语法,指向代码块 {}:代码块
举例:
//原js写法
function myFun(k,v){
return k + v;
}
//es6 写法
const myFun1 = (k,v) => {
return k+v;
}
2. 省略写法
如果形参或者代码块只有一句可以简写:
例如:
Const myFun = (k) => {return k+1;} 简写:
Const myFun = k => k +1;
3. this 指向问题
3.1 普通函数中的this
案例解析——
这是一个普通函数,globalTest()是全局性的方法,属于全局性调用,因此this就代表全局对象window。
var name = "global this";
function globalTest() {
console.log(this);//window
console.log(this.name);//global this
This.name = “global this change”;
}
globalTest();
3.2 对象方法里的this
案例解析——
如果函数作为对象的方法调用,this指向的是这个上级对象,即调用方法的对象。
const person = {
name:"张三",
age:18,
say:function(){
console.log(this.name);// 张三 这时候的this是person的对象
}
}
person.say();
3.3 构造函数对象的this
案例解析——
构造函数中的this指向新创建的对象本身。
var name = "golbal";
function person(name,age){
this.name = name,
this.age = age,
this.say = function (){
console.log(this.name,this.age);
}
}
const person1 = new person("张三",18);
const person2 = new person("小帅",19);
person1.say();
person2.say()
3.4 apply/call调用时的this
call(thisObj,Object) 调用一个对象的一个方法,以另一个对象替换当前对象。
说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
const person1 = {name:"张三",age:18};
var name = "G_张三",age = "G_18";
function myfun1(){
console.log(this.name,this.age);
}
myfun1();//对象是Windows
myfun1.call(person1);//对象改变为person1
call apply 两者的区别——myfun.call(person,18,29); myfun.apply(person,[18,29]);
3.5 箭头函数中this
箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this。
箭头函数中的this指向是它所定义(声明)的位置,可以简单理解成,定义箭头函数中的作用域的this指向谁,它就指向谁。
const obj = { name: '张三'}
function fn () {
console.log(this);//this 指向 是obj对象
return () => {
console.log(this);//this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在fn里面,而这个fn指向是的obj对象,所以这个this也指向是obj对象
}
}
const resFn = fn.call(obj); //{ name: '张三'}
resFn();//{ name: '张三'}
二、剩余参数
剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数。
1. 传不定参数
function myfun(k1,...k2){
console.log(k1);//10
console.log(k2);//(2) [20, 30]
}
myfun(10,20,30);
2. 剩余参数与解构使用
案例一:
let numarr = [1,2,3];
let [num1,...numx] = numarr;
console.log(num1);//1
console.log(numx);// [2,3]
案例二:
function connect({host,port,username,password}){
console.log(host);
}
connect({
host:"127.0.0.1",
port:"3306",
username:"root",
password:"root"
})
总结
就此停笔,最后,依旧诚挚祝福看到这篇小文的人有个好心情。