【ES6】对象方法简化写法、箭头函数、参数默认值、rest参数

news/2024/7/24 11:34:17 标签: ES6

文章目录

  • 简化对象和函数写法
  • 箭头函数
  • 参数默认值
  • rest 参数

简化对象和函数写法

【介绍】
ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁

let name = "张三";
    let talk = function () {
        console.log("你好,很高兴见到你");
    }
    //创建对象
    const person = {
        // 完整写法
        // name:name,
        // talk:talk
        // 简化写法
        name,
        talk,
        // 声明方法的简化
        study() {
            console.log("好好学习,天天向上");
        }
    }
    person.talk();
    person.study();

箭头函数

【代码示例】

	// ES6允许是用箭头(=>)定义函数
    //声明一个函数
    /*let fn = function () {
    }*/
    //箭头函数声明一个函数
    let fn = (a,b)=>{
        return a+b;
    }
    console.log(fn(1,2));//3

【特性】
1、箭头函数的 this 是静态的,始终指向函数声明时所在作用域下的 this 的值

	function getName() {
        console.log(this.name);
    }
    let getName2 = ()=>{
        console.log(this.name);
    }
    window.name = "李四"
    const person = {
        name : "lisi"
    }
    //直接调用
    getName();//李四
    getName2();//李四

    //call方法调用
    getName.call(person);//lisi
    getName2.call(person);//李四

js 中 call 方法的使用

2、不能作为构造实例化对象

/*let Persion = (name, age) => {
        this.name = name;
        this.age = age;
    }
    let me = new Persion("张三", 18);
    console.log(me);*/

在这里插入图片描述
3、不能使用 arguments 变量
普通函数

	function fn() {
        console.log(arguments);
    }
    fn(1, 2, 3);

在这里插入图片描述
箭头函数就不能使用 arguments

	let fn = () => console.log(arguments);
    fn(1, 2, 3);

在这里插入图片描述
【箭头函数的简写】
1、小括号省略,当形参有且只有一个的时候

	//正常写法
    let add = (n) => {
        return n + n;
    }
    //简写
    let add = n => {
        return n + n
    }
    console.log(add(9));//18

2、省略花括号,当代码体只有一条的时候,此时 return 必须省略,因为语句的执行结果就是返回值

	//正常写法
    let pow = (n) => {
        return n * n;
    }
    //简写
    let pow = n =>  n * n;

    console.log(pow(9));//81

【箭头函数应用1:点击div 2s后改变颜色】
在这里插入图片描述

传统写法存在问题

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>箭头函数的实践和应用场景</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background: #58a;
        }
    </style>
</head>
<body>
<div id="ad"></div>
<script>
    // 需求-1 点击 div 2s 后颜色变成『粉色』
    // 获取元素
    let ad = document.getElementById('ad');
    // 绑定事件
    ad.addEventListener("click", function () {
        // 传统写法
        // 定时器:参数1:回调函数;参数2:时间;
        setTimeout(function () {
            console.log(this);
            this.style.background = 'pink';
        }, 2000);
    });
</script>
</body>
</html>

这种写法是有问题的,因为 setTimeout 中的 this 是指向 window 的,window 没有 style 属性,所以 undefined
在这里插入图片描述
传统解决办法:保存一个外层的 this

	let ad = document.getElementById('ad');
    ad.addEventListener("click", function () {
        //保存 this 的值
        let _this = this;
        setTimeout(function () {
            console.log(_this);
            _this.style.background = 'pink';
        }, 2000);
    });

ES6写法:

	let ad = document.getElementById('ad');
    ad.addEventListener("click", function () {
        setTimeout(()=> {
            console.log(_this);
            this.style.background = 'pink';
        }, 2000);
    });

箭头函数的 this 是静态的,指向声明时所在作用域下的 this,也就是 ad

【箭头函数应用2:从数组中返回偶数的元素】

之前的写法

	const arr = [1, 6, 9, 10, 100, 25];
    const result = arr.filter(function (item) {
        if (item % 2 === 0) {
            return true;
        } else {
            return false;
        }
    });
    console.log(result);//[6, 10, 100]

ES6写法

	const arr = [1, 6, 9, 10, 100, 25];
    const result = arr.filter(item => {
        if (item % 2 === 0) {
            return true;
        } else {
            return false;
        }
    });
    //可简写为:
    const result = arr.filter(item => item % 2 === 0);
    console.log(result);

箭头函数适合与 this 无关的回调:定时器,数组的方法回调
箭头函数不适合与 this 有关的回调:事件回调,对象的方法

参数默认值

ES6允许给函数的参数赋初始值
【特点】
1、形参初始值 具有默认值的参数,一般位置要靠后(潜规则)

	function add(a, b, c = 10) {
        return a + b + c;
    }

    let result = add(1, 2);
    console.log(result); // 13

2、与解构赋值结合

	function connect({host = "127.0.0.1", username, password, port}) {
        console.log(host)//localhost
        console.log(username)//root
        console.log(password)//root
        console.log(port)//3306
    }

    connect({
        host: 'localhost',
        username: 'root',
        password: 'root',
        port: 3306
    })

rest 参数

ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments

ES5获取实参的方式

	function data() {
        console.log(arguments);
    }

    data("西瓜", "草莓", "芒果");

可以看到接收到的是一个对象
在这里插入图片描述
ES6的 rest 参数...args,rest 参数必须放在最后面

	function data(...args) {
        console.log(args); // fliter some every map
    }

    data("西瓜", "草莓", "芒果");

可以看到收到的是数组,这样就可以使用操作数组的方法了
在这里插入图片描述


http://www.niftyadmin.cn/n/1816662.html

相关文章

详解C语言实现植物大战僵尸阳光9999

文章目录效果展示工具&#xff1a;要求(建议)一、CE部分&#xff1a;二、核心代码部分三、润色效果展示 另外点击还会有"德玛西亚&#xff01;"音效 工具&#xff1a; 核心代码&#xff1a;Devcpp足够&#xff1b; 对话框界面和资源文件的添加&#xff1a;CodeBloc…

【ES6】扩展运算符、symbol、迭代器

文章目录扩展运算符symbol迭代器扩展运算符 【代码示例】 ...扩展运算符能将数组转换为逗号分隔的参数序列 未使用扩展运算符时 const fruits ["西瓜", "草莓", "芒果"];function data() {console.log(arguments);}data(fruits)使用扩展运算…

Repeater,DataList控件

Repeater: 其格式. <html> <body> <form runat"server"> <asp:Repeater id"cdcatalog" runat"server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> <Foot…

Webstorm 常用技巧

文章目录代码快捷键调试ts代码格式化ts使用单引号代码快捷键 我们看到JS快捷键中 log 可以输出 console.log 调试ts代码 1、webstorm 终端运行npm install typescript ts-node -D把 typescript 和 ts-node 安装到本地&#xff0c;原来通过 -g &#xff08;全局&#xff09;…

OpenCV图像

OpenCV图像 背景图像视频读取图像输出图像保存图像创建和显示窗口读取图片保存图片摄像头采集帧播放视频文件获取鼠标添加控件 绘图线段矩形圆添加文字 形态学变化腐蚀膨胀 图像轮廓 实战项目&#xff1a;车辆统计几何变换平移缩放旋转仿射 滤波与增强线性滤波非线性滤波图像锐…

初步探究C++友元

文章目录图解表格代码main.cpp表格中第一种表格中第二种表格中第三种表格中第四种表格中第五种水平&#xff1a;看的 Cprimer 5 &#xff0c;目前只把类的基本东西学了。 越往后看越觉得类的结构(主要是几个类之间互相牵扯)复杂&#xff0c;就重新复习和整理了一下友元部分。 书…

TypeScript Dom操作

文章目录介绍获取元素类型断言获取多个DOM元素操作文本内容操作样式操作事件介绍 DOM 是浏览器提供的&#xff08;浏览器特有)&#xff0c;专门用来操作网页内容的一些JS对象(API) 通过DOM操作&#xff0c;可以让Js/Ts控制页面&#xff08;(HTML)内容&#xff0c;让页面“动”…

老婆回家时没有帮老婆打点,也完全忘记提醒老婆晚上火车上很凉,内疚.亲爱的,对不起!...

老婆回家时没有帮老婆打点,也完全忘记提醒老婆晚上火车上很凉,内疚.亲爱的,对不起! 转载于:https://www.cnblogs.com/cime63/archive/2008/08/08/1264045.html