黑马程序员前端JavaScript高级——ES6学习笔记

简单看下开头目录,里面包含了面向对象的编程思想,以及构造函数,类和对象、原型链、箭头函数、数组和字符串新增方法、函数递归、深拷贝浅拷贝、正则表达式等知识点。本文是对CSDN其他博主记录的一个补充,因为黑马也是今年才陆续补充一些知识点的视频的,本文将其收录于此,雷同勿怪。

目录

Day 1 - JavaScript 面向对象

01 - 学习目标(target)

02 - 面向对象编程介绍

面向过程编程 POP(Process- oriented programming)

面向对象编程 OOP(Object Oriented Programming)

03 - ES6 中的类和对象

对象

类 class

创建类和对象:

类添加方法:

04 - 类的继承

super 关键字

使用类注意事项

Day 2 - 构造函数和原型

01 - 学习目标(target)

02 - 构造函数和原型

概述

构造函数

构造函数原型 prototype 

对象原型 __proto__ 

constructor 构造函数

构造函数、实例、原型对象三者之间的关系

原型链

JavaScript 的成员查找机制(规则)

原型对象this指向

扩展内置对象

03 - 继承

call()方法

借用构造函数继承父类型属性

借用原型对象继承父类型方法

ES6 类的本质

04 - ES5 中的新增方法

概述

数组方法

字符串方法

对象方法

Day 3 - 函数进阶

01 - 学习目标(target) 

02 - 函数的定义和调用

函数的定义方式  

函数的调用方式

03 - this 的指向 

改变函数内部 this 指向

call apply bind 总结

04 - 严格模式 

什么是严格模式

开启严格模式

严格模式中的变化

05 - 高阶函数

06 - 闭包

变量作用域

什么是闭包

在 chrome 中调试闭包 

闭包的作用

闭包应用 --- 点击 li 输出索引号

闭包案例

闭包总结

07 - 递归

什么是递归

利用递归求数学题

浅拷贝和深拷贝

Day 4 - 正则表达式

01 - 学习目标(target)

02 - 正则表达式概述

什么是正则表达式

正则表达式的特点

03 - 正则表达式在 JavaScript 中的使用

创建正则表达式

测试正则表达式 test

04 - 正则表达式中的特殊字符

正则表达式的组成 

边界符

字符类

量词符

案例:用户名验证

括号总结

预定义类

案例:座机号验证

05 - 正则表达式中的替换

replace 替换

正则表达式参数

案例:敏感词过滤

Day 5 - ES6部分知识 

01 - 学习目标(target )

02 - ES6简介

什么是ES6

为什么使用ES6

03 - ES6 的新增语法

let 关键字

经典面试题

const 关键字

let、const、var 的区别

解构赋值

箭头函数

剩余参数

04 - ES6 的内置对象扩展

Array 的扩展方法 

String 的扩展方法

Set 数据结构


Day 1 - JavaScript 面向对象

01 - 学习目标(target)

  • 能够说出什么是面向对象
  • 能够说出类和对象的关系
  • 能够使用 class 创建自定义类型
  • 能够说出什么是继承

02 - 面向对象编程介绍

面向过程编程 POP(Process- oriented programming)

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依 次调用就可以了。

面向过程,就是按照我们分析好了的步骤,按照步骤解决问题。

面向对象编程 OOP(Object Oriented Programming)

面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。

举个例子:将大象装进冰箱,面向对象做法。

先找出对象,并写出这些对象的功能:

1. 大象对象

● 进去

2. 冰箱对象

● 打开

● 关闭

3. 使用大象和冰箱的功能

面向对象是以对象功能来划分问题,而不是步骤。

面向对象编程具有灵活、代码可复用、容易维护和开发的优点,更适合多人合作的大型软件项目。

其特性:

  • 封装性
  • 继承性
  • 多态性

面向过程和面向对象的对比

面向过程 面向对象
优点 性能比面向对象高,适合跟硬件联系很紧密 的东西,例如单片机就采用的面向过程编程。 易维护、易复用、易扩展,由于面向对象有 封装、继承、多态性的特性,可以设计出低耦合的 系统,使系统 更加灵活、更加易于维护
缺点 没有面向对象易维护、易复用、易扩展 性能比面向过程低

03 - ES6 中的类和对象

对象

 对象是一个具体的事物在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、 函数等。

 对象是由属性方法组成的:

  • 属性:事物的特征,在对象中用属性来表示(常用名词)
  • 方法:事物的行为,在对象中用方法来表示(常用动词)

类 class

在 ES6 中新增的类概念,可以用关键字 class 声明一个类,之后以这个类来实例化对象。

抽象了对象的公共部分,它泛指某一大类(class)。

对象特指某一个,通过类实例化一个具体的对象。

面向对象的思维特点:

1. 抽取(抽象)对象共用的属性和行为组织(封装)成一个(模板)

2. 对类进行实例化, 获取类的对象

创建类和对象:

<script>
// 1. 创建类 class  创建一个 明星类
    class Star {
       constructor(uname, age) {
          this.uname = uname;
          this.age = age;
       }
    }

// 2. 利用类创建对象 new
    var ldh = new Star('刘德华', 18);
    var zxy = new Star('张学友', 20);
    console.log(ldh);
    console.log(zxy);
//(1) 通过class 关键字创建类, 类名我们还是习惯性定义首字母大写
//(2) 类里面有个constructor 函数,可以接受传递过来的参数,同时返回实例对象
//(3) constructor 函数 只要 new 生成实例时,就会自动调用这个函数, 如果我们不写这个函数,类也会自动生成这个函数
//(4) 生成实例 new 不能省略
//(5) 最后注意语法规范, 创建类 类名后面不要加小括号,生成实例 类名后面加小括号, 构造函数不需要加function
</script>

注意:类必须使用 new 实例化对象;

constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过 new 命令生成对象实例时,自动调用该方法。如果没有显示定义,,类内部会自动给我们创建一个 constructor()

类添加方法:

<script>
// 1. 创建类 class  创建一个 明星类
   class Star {
   // 类的共有属性放到 constructor 里面
   constructor(uname, age) {
       this.uname = uname;
       this.age = age;
    }
    sing(song) {
    // console.log('我唱歌');
       console.log(this.uname + song);

       }
    }

// 2. 利用类创建对象 new
   var ldh = new Star('刘德华', 18);
   var zxy = new Star('张学友', 20);
   console.log(ldh);
   console.log(zxy);
// (1) 我们类里面所有的函数不需要写function 
// (2) 多个函数方法之间不需要添加逗号分隔
   ldh.sing('冰雨');
   zxy.sing('李香兰');
</script>

04 - 类的继承

程序中的继承:子类可以继承父类的一些属性和方法。

语法:

super 关键字

super 关键字用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数。

语法:

注意:子类在构造函数中使用 super, 必须放到 this 前面 (必须先调用父类的构造方法,在使用子类构造方法)

类的继承实例: 

 <script>
        // 1. 类的继承
        // class Father {
        //     constructor() {

        //     }
        //     money() {
        //         console.log(100);

        //     }
        // }
        // class Son extends Father {

        // }
        // var son = new Son();
        // son.money();
        class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                console.log(this.x + this.y);

            }
        }
        class Son extends Father {
            constructor(x, y) {
                super(x, y); //调用了父类中的构造函数
            }
        }
        var son = new Son(1, 2);
        var son1 = new Son(11, 22);
        son.sum();
        son1.sum();
</script>

super 关键字调用父类普通函数 实例 

<script>
// super 关键字调用父类普通函数
   class Father {
     say() {
        return '我是爸爸';
     }
   }
   class Son extends Father {
     say() {
     // console.log('我是儿子');
        console.log(super.say() + '的儿子');
     // super.say() 就是调用父类中的普通函数 say()
           }
   }
   var son = new Son();
   son.say();
// 继承中的属性或者方法查找原则: 就近原则
// 1. 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类的
// 2. 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则)
</script>

 子类继承父类同时继承扩展自己的方法:

<script>
// 父类有加法方法
   class Father {
      constructor(x, y) {
          this.x = x;
          this.y = y;
         }
          sum() {
            console.log(this.x + this.y);
         }
      }
// 子类继承父类加法方法 同时 扩展减法方法
   class Son extends Father {
      constructor(x, y) {
      // 利用super 调用父类的构造函数
      // super 必须在子类this之前调用
            super(x, y);
            this.x = x;
            this.y = y;

         }
         subtract() {
           console.log(this.x - this.y);

         }
      }
   var son = new Son(5, 3);
   son.subtract();
   son.sum();
</script>

使用类注意事项

三个注意点:

  1. 在 ES6 中类没有变量提升,所以必须先定义类,才能通过类实例化对象。
  2. 类里面的共有属性和方法一定要加 this 使用。
  3. 类里面的 this 指向问题。
  4. constructor 里面的 this 指向实例对象, 方法里面的 this 指向这个方法的调用者。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <button>点击</button>
    <script>
        var that;
        var _that;
        class Star {
            constructor(uname, age) {
                // constructor 里面的this 指向的是 创建的实例对象
                that = this;
                console.log(this);

                this.uname = uname;
                this.age = age;
                // this.sing();
                this.btn = document.querySelector('button');
                this.btn.onclick = this.sing;
            }
            sing() {
                // 这个sing方法里面的this 指向的是 btn 这个按钮,因为这个按钮调用了这个函数
                console.log(this);

                console.log(that.uname); // that里面存储的是constructor里面的this
            }
            dance() {
                // 这个dance里面的this 指向的是实例对象 ldh 因为ldh 调用了这个函数
                _that = this;
                console.log(this);

            }
        }

        var ldh = new Star('刘德华');
        console.log(that === ldh);
        ldh.dance();
        console.log(_that === ldh);

        // 1. 在 ES6 中类没有变量提升,所以必须先定义类,才能通过类实例化对象

        // 2. 类里面的共有的属性和方法一定要加this使用.
    </script>
</body>

</html

Day 2 - 构造函数和原型

01 - 学习目标(target)

  •  能够使用构造函数创建对象
  • 能够说出原型的作用
  • 能够说出访问对象成员的规则
  • 能够使用 ES5 新增的一些方法

02 - 构造函数和原型

概述

在 ES6 之前,JS 中并没有引入类的概念。ES6, 全称 ECMAScript 6.0 ,2015.06 发版。但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏 览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。

在 ES6之前 ,对象不是基于类创建的,而是用一种称为构建函数的特殊函数来定义对象和它们的特征。

创建对象可以通过三种方式:( ES6 之前的方法)

  • 对象字面量
  • new   Object()
  • 自定义构造函数
<script>
   // 1. 利用 new Object() 创建对象

      var obj1 = new Object();

   // 2. 利用 对象字面量创建对象

      var obj2 = {};

   // 3. 利用构造函数创建对象
      function Star(uname, age) {
         this.uname = uname;
         this.age = age;
         this.sing = function() {
            console.log('我会唱歌');

         }
      }

      var ldh = new Star('刘德华', 18);
      var zxy = new Star('张学友', 19);
      console.log(ldh);
      ldh.sing();
      zxy.sing();
</script>

构造函数

构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。我 们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

在 JS 中,使用构造函数时要注意以下两点:

  • 构造函数用于创建某一类对象,其首字母要大写
  • 构造函数要和 new 一起使用才有意义

new 在执行时会做四件事情:

① 在内存中创建一个新的空对象。

② 让 this 指向这个新的对象。

③ 执行构造函数里面的代码,给这个新对象添加属性和方法。

④ 返回这个新对象(所以构造函数里面不需要 return )。

JavaScript 的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的 this 上添加。通过这两种方式添加的成员,就分别称为静态成员实例成员

  • 静态成员:在构造函数本上添加的成员称为静态成员,只能由构造函数本身来访问
  • 实例成员:在构造函数内部创建的对象成员称为实例成员,只能由实例化的对象来访问
<script>
    // 构造函数中的属性和方法我们称为成员, 成员可以添加
    function Star(uname, age) {
       this.uname = uname;
       this.age = age;
       this.sing = function() {
           console.log('我会唱歌');

          }
    }
    var ldh = new Star('刘德华', 18);
    // 1.实例成员就是构造函数内部通过this添加的成员 uname age sing 就是实例成员
    // 实例成员只能通过实例化的对象来访问
    console.log(ldh.uname);
    ldh.sing();
    // console.log(Star.uname); // 不可以通过构造函数来访问实例成员
    // 2. 静态成员 在构造函数本身上添加的成员  sex 就是静态成员
    Star.sex = '男';
    // 静态成员只能通过构造函数来访问
    console.log(Star.sex);
    console.log(ldh.sex); // 不能通过对象来访问
</script>

构造函数方法虽然很好用,但是存在浪费内存的问题

比如:

function Star(uname, age) {
this.uname = uname;
this.age = age;
this.sing = function() {
console.log('我会唱歌');
}
}
var ldh = new Star('刘德华', 18);
var zxy = new Star('张学友', 19);
console.log(ldh.sing === zxy.sing)  // false

 我们希望所有的对象使用同一个函数,这样就比较节省内存,那么我们要怎样做呢?

构造函数原型 prototype 

构造函数通过原型分配的函数是所有对象所共享的。 

JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象。注意这个 prototype 就是一 个对象,这个对象的所有属性和方法,都会被构造函数所拥有 

我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法。 

因此,上述例子可进行如下修改 :

<script>
   // 1. 构造函数的问题. 
   function Star(uname, age) {
       this.uname = uname;
       this.age = age;
       // this.sing = function() {
       //     console.log('我会唱歌');

       // }
   }
   Star.prototype.sing = function() {
       console.log('我会唱歌');
   }
   var ldh = new Star('刘德华', 18);
   var zxy = new Star('张学友', 19);
   console.log(ldh.sing === zxy.sing);
   // console.dir(Star);
   ldh.sing();
   zxy.sing();
   // 2. 一般情况下,我们的公共属性定义到构造函数里面, 公共的方法我们放到原型对象身上
</script>

 因此,原型是什么?

答:一个对象,我们也称为 prototype原型对象

原型的作用是什么?

答:共享方法

对象原型 __proto__ 

对象都会有一个属性 __proto__ 指向构造函数的 prototype 原型对象,之所以我们对象可以使用构造函数 prototype 原型对象的属性和方法,就是因为对象有 __proto__ 原型的存在。

  • __proto__对象原型和原型对象 prototype 是等价的 ;
  • __proto__对象原型的意义就在于为对象的查找机制提供一个方向,或者说一条路线,但是它是一个非标准属性, 因此实际开发中,不可以使用这个属性,它只是内部指向原型对象 prototype。
 <script>
    function Star(uname, age) {
        this.uname = uname;
        this.age = age;
    }
    Star.prototype.sing = function() {
            console.log('我会唱歌');
    }
    var ldh = new Star('刘德华', 18);
    var zxy = new Star('张学友', 19);
    ldh.sing();
  console.log(ldh); // 对象身上系统自己添加一个 __proto__ 指向我们构造函数的原型对象prototype
  console.log(ldh.__proto__ === Star.prototype);
  // 方法的查找规则: 首先先看ldh 对象身上是否有 sing 方法,如果有就执行这个对象上的sing
  // 如果么有sing 这个方法,因为有__proto__ 的存在,就去构造函数原型对象prototype身上去查找sing这个方法
</script>

constructor 构造函数

对象原型( __proto__)构造函数(prototype)原型对象里面都有一个属性 constructor 属性 ,constructor 我们称为构造函数,因为它指回构造函数本身。 

constructor 主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数。

一般情况下,对象的方法都在构造函数的原型对象中设置。如果有多个对象的方法,我们可以给原型对象采取对象形式赋 值,但是这样就会覆盖构造函数原型对象原来的内容,这样修改后的原型对象 constructor 就不再指向当前构造函数了。 此时,我们可以在修改后的原型对象中,添加一个 constructor 指向原来的构造函数。

<script>
   function Star(uname, age) {
      this.uname = uname;
      this.age = age;
   }
// 很多情况下,我们需要手动的利用constructor 这个属性指回 原来的构造函数
// Star.prototype.sing = function() {
//     console.log('我会唱歌');
// };
// Star.prototype.movie = function() {
//     console.log('我会演电影');
// }
   Star.prototype = {
// 如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,则必须手动的利用constructor指回原来的构造函数
       constructor: Star,
       sing: function() {
          console.log('我会唱歌');
       },
       movie: function() {
            console.log('我会演电影');
       }
   }
   var ldh = new Star('刘德华', 18);
   var zxy = new Star('张学友', 19);
   console.log(Star.prototype);
   console.log(ldh.__proto__);
   console.log(Star.prototype.constructor);
   console.log(ldh.__proto__.constructor);
</script>

构造函数、实例、原型对象三者之间的关系

原型链

 <script>
     function Star(uname, age) {
         this.uname = uname;
         this.age = age;
     }
     Star.prototype.sing = function() {
         console.log('我会唱歌');
     }
     var ldh = new Star('刘德华', 18);
     // 1. 只要是对象就有__proto__ 原型, 指向原型对象
     console.log(Star.prototype);
     console.log(Star.prototype.__proto__ === Object.prototype);
     // 2.我们Star原型对象里面的__proto__原型指向的是 Object.prototype
     console.log(Object.prototype.__proto__);
     // 3. 我们Object.prototype原型对象里面的__proto__原型  指向为 null
</script>

JavaScript 的成员查找机制(规则)

① 当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性。

② 如果没有就查找它的原型(也就是 __proto__指向的 prototype 原型对象)。

③ 如果还没有就查找原型对象的原型(Object的原型对象)。

④ 依此类推一直找到 Object 为止(null)。

⑤ __proto__对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线。

<script>
    function Star(uname, age) {
        this.uname = uname;
        this.age = age;
    }
    Star.prototype.sing = function() {
        console.log('我会唱歌');

    }
    Star.prototype.sex = '女';
    // Object.prototype.sex = '男';
    var ldh = new Star('刘德华', 18);
    ldh.sex = '男';
    console.log(ldh.sex);
    console.log(Object.prototype);
    console.log(ldh);
    console.log(Star.prototype);
    console.log(ldh.toString());
</script>

原型对象this指向

构造函数中的 this 指向我们实例对象。

原型对象里面放的是方法,这个方法里面的 this 指向的是这个方法的调用者, 也就是这个实例对象。 

 <script>
    function Star(uname, age) {
        this.uname = uname;
        this.age = age;
    }
    var that;
    Star.prototype.sing = function() {
        console.log('我会唱歌');
        that = this;
    }
    var ldh = new Star('刘德华', 18);
    // 1. 在构造函数中,里面this指向的是对象实例 ldh
    ldh.sing();
    console.log(that === ldh);

    // 2.原型对象函数里面的this 指向的是 实例对象 ldh
</script>

扩展内置对象

可以通过原型对象,对原来的内置对象进行扩展自定义的方法。比如给数组增加自定义求偶数和的功能。

注意:数组和字符串内置对象不能给原型对象覆盖操作 Array.prototype = {} ,只能是 Array.prototype.xxx = function(){} 的方式。 

<script>
    // 原型对象的应用 扩展内置对象方法
    Array.prototype.sum = function() {
        var sum = 0;
        for (var i = 0; i < this.length; i++) {
            sum += this[i];
        }
        return sum;
    };
    // Array.prototype = {
    //     sum: function() {
    //         var sum = 0;
    //         for (var i = 0; i < this.length; i++) {
    //             sum += this[i];
    //         }
    //         return sum;
    //     }

    // }
    var arr = [1, 2, 3];
    console.log(arr.sum());
    console.log(Array.prototype);
    var arr1 = new Array(11, 22, 33);
    console.log(arr1.sum());
</script>

03 - 继承

ES6 之前并没有给我们提供 extends 继承。我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。

call()方法

调用这个函数, 并且修改函数运行时的 this 指向

  • thisArg :当前调用函数 this 的指向对象
  • arg1,arg2:传递的其他参数
<script>
    // call 方法
    function fn(x, y) {
        console.log('我想喝手磨咖啡');
        console.log(this);
        console.log(x + y);


    }
    var o = {
        name: 'andy'
    };
    // fn();
    // 1. call() 可以调用函数
    // fn.call();
 
  • 4
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。HTML 是一种用于创建网页的标记语言,它可以定义网页的结构和内容。CSS 是一种用于控制网页样式的语言,它可以定义网页的布局、颜色、字体等样式。JavaScript 是一种用于添加交互性和动态效果的编程语言,它可以让网页变得更加生动和有趣。ES6 是 JavaScript 的一个版本,它引入了许多新的语法和特性,使得编写 JavaScript 更加方便和高效。以上就是我对 HTML、CSS、JavaScriptES6 的简要介绍。 ### 回答2: HTML 是超文本标记语言(HyperText Markup Language)的缩写,用于构建网页结构。通过使用标签(tag),可以定义网页的内容、布局和样式。HTML5 是HTML的最新版本,它引入了新的元素和属性,提供了更多的功能和灵活性。 CSS 是层叠样式表(Cascading Style Sheets)的缩写,用于为网页添加样式和布局。通过使用选择器(selector)和属性(property),可以控制网页元素的外观和位置。CSS3 是CSS的最新版本,它引入了新的特性,如过渡效果(transition),动画(animation)和阴影(box-shadow)。 JavaScript 是一种脚本语言,用于为网页添加交互性和动态效果。它可以通过HTML标签的事件(如点击、鼠标悬停等)来触发特定的行为。 JavaScript ES6 是 ECMAScript 6 的缩写,是 JavaScript 最新的标准版本,引入了很多新的语法和特性,如箭头函数(arrow functions)、常量与块级作用域(const 和 let)、模块化(modules)等。 HTML的基本结构如下: ```html <!DOCTYPE html> <html> <head> <title>网页标题</title> <link rel="stylesheet" href="style.css"> </head> <body> <header>页眉</header> <nav>导航栏</nav> <section>内容区域</section> <aside>侧边栏</aside> <footer>页脚</footer> <script src="script.js"></script> </body> </html> ``` 其中,`<!DOCTYPE html>`声明文档类型为HTML5,`<html>`标签包裹整个网页,`<head>`标签用于定义元数据和引入外部样式表和脚本文件,`<title>`标签定义网页标题,`<link>`标签引入外部CSS文件,`<script>`标签引入外部JavaScript文件。 CSS的基本用法如下: ```css body { background-color: #f2f2f2; font-family: Arial, sans-serif; } header { background-color: #333; color: #fff; padding: 10px; } section { background-color: #fff; color: #333; padding: 20px; } ``` 以上代码设置了背景颜色、字体和间距等样式。 JavaScript的基本语法如下: ```javascript // 变量声明与赋值 let name = 'John'; const age = 25; // 函数定义 function sayHello() { console.log('Hello!'); } // 箭头函数 const greeting = message => { console.log(message); } sayHello(); // 输出:Hello! greeting('Welcome to my website!'); // 输出:Welcome to my website! ``` 以上代码定义了变量和函数,并调用了函数输出信息。 ES6还提供了许多其他的特性,如模板字符串(template literals)、解构赋值(destructuring assignment)、Promise等,用于提供更强大、更简洁的开发工具。使用HTML、CSS和JavaScript开发网页可以创造出丰富多样的用户体验和网页交互效果。 ### 回答3: HTML (超文本标记语言)是用于构建网页结构的标记语言。通过使用不同的标签和属性,可以创建标题、段落、链接、图像等元素。HTML提供了一种简单的方式来将文本、图像和其他内容组织在一起,并以逻辑和结构化的方式呈现。 CSS (层叠样式表)用于控制网页中的布局和外观。它提供了一种样式语言,可以通过选择器和规则来定义网页元素的外观。通过使用CSS,您可以更改字体样式、背景颜色、间距和边框、响应式设计等。 JavaScript (JS) 是一种用于控制网页行为的脚本语言。它可以添加交互性和动态功能,例如验证表单、处理用户输入、创建动画等。通过JavaScript,您可以与用户交互并对网页进行动态更新。 ES6 (ECMAScript 6) 是JavaScript的一个新版本,提供了许多改进和新功能。它引入了let和const关键字来定义变量,箭头函数简化了函数的写法,模板字符串提供了更好的字符串插值,解构赋值方便了对象和数组的处理,扩展操作符可以方便地操作数组和对象等。 在学习这些技术的过程中,以下是一些建议和要点: 1. 使用语义化的HTML标记,清晰地定义网页的结构和内容。 2. 使用外部样式表或内部样式表来管理和组织CSS代码,以增加可维护性。 3. 利用CSS选择器和样式规则来定义元素的外观和布局,使用层叠和继承规则来优化样式。 4. 使用一致的命名约定和组织方式来组织JavaScript代码,以提高代码的可读性和可维护性。 5. 使用函数和事件处理程序来实现交互性和动态行为,避免全局变量的污染。 6. 在ES6中,尽量使用let和const来定义变量,使用箭头函数来简化函数的写法,利用模板字符串和解构赋值来提高代码的可读性。 7. 注意浏览器的兼容性问题,使用polyfills或者转译工具来支持旧版本的浏览器。 8. 通过阅读文档和教程,并实践编写代码来提高技能水平。 通过掌握HTML、CSS、JavaScriptES6,您可以创建交互式和动态的网页,并为用户提供更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值