Vue 2.X 基础篇 第1章 ES6的常用语法补充

目录

 

第1章  ES6的常用语法补充

课时1:Vue 学前须知

课时2:Vue 课程开篇

 课时3:Vue 基础-let和const-上

 课时4:Vue 基础-let和const-下

课时5:Vue-解构赋值

课时6:Vue基础-ES6新增的数据类型Set

课时7:Vue基础-ES6新增的数据类型map-上

课时8:Vue基础-ES6新增的数据类型map-下

课时9:Vue-ES6新增的数据类型Symbol

课时10:Vue-ES6新增的语法 class

课时11:Vue基础-内置对象扩展

课时12:Vue基础-函数扩展

 课时13:Vue基础-箭头函数

课时14:Vue基础-promise

课时15:Vue基础-类和对象


 

第1章  ES6的常用语法补充

课时1:Vue 学前须知

了解 Html +CSS+javascript基础知识

课时2:Vue 课程开篇

三大主流框架学习之前需了解ES6的常用语法

 课时3:Vue 基础-let和const-上

01-作用域只局限于当前代码块

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-let和const</title>
</head>
<body>
<script>
    //let 和 const 声明 变量和常量  var
    //01-作用于只局限于当前代码块
    {
        var str="张三";
        console.log(str);

        let str1="李四";
        console.log(str1);
    }
    console.log("+++++"+str);
    console.log("-----"+str1);
</script>
</body>
</html>

结果:

02-使用let中的变量作用域不会被提升

ES5中:

va在ES5中声明的变量作用域无时无刻不在提升

正常情况下:

  var str1="张三";
  console.log(str1);

输出:张三

改为下面的情况时,输出undefined

console.log(str1);//输出undefined
var str1="张三";

结果:   

ES5会将上述语句做如下提升:

  var str1;
  console.log(str);
  str1="张三";

结果:   

在ES6中:

{
        console.log(str);
        let str="李四";
    }

结果:

03-在相同的作用域下不能声明相同变量

   {
        var str2="张三";
        var str2="李四";
        console.log(str2);//输出李四

        let str2="王五";
        let str2="赵六";
        console.log(str2);
        //Uncaught SyntaxError: Identifier 'str2' has already been declared
    }

04-for循环提现let的父子作用域

for(let i=0;i<=5;i++){
        let i=10;
        console.log(i);
    }

输出:10

 

 课时4:Vue 基础-let和const-下

 

<script>
    //01-只有在当前的代码块中有效
    {
        const a='zhangsan';
        const a='lisi';// SyntaxError: Identifier 'a' has already been declared   不能被重复声明,同一代码块只能被声明一次
        console.log(a);//输出 zhangsan
    }
    console.log(a);//Uncaught ReferenceError: a is not defined
    //02-作用域不会被提升
    //03-不能重复使用
</script>
//04-声明的常量必须赋值
    {
        let name;
        name='zhangsan';
        console.log(name);   //输出zhangsan

        const name;
        name='zhangsan';
        console.log(name);   //输出 Uncaught SyntaxError: Missing initializer in const declaration
    }
 {
     const name='zhang';
     name='lisi';
     console.log(name);//报错:不能给常量赋值
     }
 const obj={name:'张三'};
    console.log(obj);
    obj.name='李四';
    console.log(obj);//

课时5:Vue-解构赋值

<script>
    //01-基本用法
    let name='张三',age="18",sex='男';
    console.log(name);
    console.log(age);
    console.log(sex);//
</script>

<script>
    //01-基本用法
    //let name='张三',age="18",sex='男';
    let [name,age,sex]=['李四',20,'女'];
    console.log(name);
    console.log(age);
    console.log(sex);//
</script>

 //02-对象的解构赋值
   // var obj={name:'张三',age: 55,sex: '男'};
    let {name,age,sex}={name:'张三',age:55,sex:'男'};
    console.log(name);
    console.log(age);
    console.log(sex);

对对象的解构 

 let {name,age,friends}={name:'张三',age:55,friends:{name:'dog',age:2}};
    console.log(name);
    console.log(age);
    console.log(friends);//key需一一对应

  //03-数组的解构赋值
    let [name, age, sex]=['李四','20','女'];
    let [arr1,[arr2,arr3,[arr4,arr5]]]=[1,[2,3,[4,5]]];
    console.log(name);
    console.log(age);
    console.log(sex);
    console.log(arr1,arr2,arr3,arr4,arr5);

   //04-基本类型的解构赋值
    let [a,b,c,d,e]='我是中国人';
    console.log(a);
    console.log(b);
    console.log(c);
    console.log(d);
    console.log(e);

课时6:Vue基础-ES6新增的数据类型Set

<script>
  //1.创建一个集合
    let arr=[];//数组
    let obj={};//对象
    let set1=new Set();//集合
    console.log(set1);

    let set=new Set(['张三','李四','王五','李四']);//集合
    console.log(set);

    // 02- 一个属性
    console.log(set.size);//set1集合长度

    //03-四个方法
    //add
    set.add("刘德华");
    set.add('姚晨').add('孙悟空');//列式调用
    console.log(set);

    //delete
    console.log(set.delete('张三'));
    console.log(set.delete('李四'));

    //has
    console.log(set.has('张三'));//集合里有张三则返回TRUE

    //clear
    console.log(set.clear());//undefine
    console.log(set);

</script>

课时7:Vue基础-ES6新增的数据类型map-上

 

    //1.创建map
     const map=new Map([
            ['name','张三'],
            ['age',18],
            ['sex','男']
    ]);
    console.log(map);

课时8:Vue基础-ES6新增的数据类型map-下

 

  //1.创建map
     const map=new Map([
            ['name','张三'],
            ['age',18],
            ['sex','男'],
             ['name','hhaa ']
    ]);
    console.log(map);
    console.log(map.size);//去重复

    //2. set (增加元素) get
    map.set('friends',['赵六','力气']).set(['112'],'龙啸');
   console.log(map);

   console.log(map.get('name'));

   //3. delete
   console.log(map.delete('friends')) ;
   console.log(map);

    //4. has
   console.log(map.has('age')) ;

    //5. clear
     map.clear()
    console.log(map);
   

//6. keys(),values(),entries()
    console.log(map.keys());
    console.log(map.values());
    console.log(map.entries());

  //遍历
    map.forEach(function(value,index){
        console.log(value);
        console.log(index);
    })

  map.forEach(function(value,index){
        console.log(index+":"+value);
    })

  //注意事项
    map.set({},'aaaaa');
    map.set({},'哈哈哈');
   console.log(map);
    console.log({}==={});

课时9:Vue-ES6新增的数据类型Symbol

<script>
 //1. 定义
    let str1=Symbol();
    let str2=Symbol();
    console.log(str1===str2);//false
    console.log(typeof str1);//symbol
    console.log(typeof str2);//symbol

    //2. 描述
    let str3=Symbol('name');
    let str4=Symbol('name');
    console.log(str3);//输出 Symbol//false(name)
    console.log(str4);//输出 Symbol(name)
    console.log(str3===str4);//false,表示两者独一无二

    //3.对象的属性名
    const obj={};
    obj.name='张三';
    obj.name='李四';
    console.log(obj);//输出值 {name: "李四"}

    const obj1={};
    obj1[Symbol('name')]='张三';
    obj1[Symbol('name')]='李四';
    console.log(obj1);//输出  {Symbol(name): "张三", Symbol(name): "李四"}
    
</script>

课时10:Vue-ES6新增的语法 class

//1. 构造函数
    function Person(name,age){
       this.name=name;
        this.age=age;
   }

    Person.prototype={
        constructor:Person,
        print(){
            console.log("我叫"+this.name+",今年"+this.age+"岁了");
        }
    }
    let person =new Person('张三',10);
    console.log(person);
 //2. 通过class面向对象
    class Person{
        constructor(name,age){
            this.name=name;
            this.age=age;
        }
        print(){
            console.log("我叫"+this.name+",今年"+this.age+"岁了");
        }
    }
   let person =new Person('张三',10);
   console.log(person);
    person.print();

课时11:Vue基础-内置对象扩展

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>10-模板字符串</title>
    <style>
       .test{
           width: 100px;
           height: 200px;
           background-color: red;
       } 
    </style>
</head>
<body>

<ul>
    <li>1111</li>
    <li>1111</li>
    <li>1111</li>
    <li>1111</li>
    <li>1111</li>
    <li>1111</li>
</ul>
<script>
    //1. 模板字符串  反撇号 ( `` )
    let str='适合敲代码!';
    let className='test';
    let html= `<html>
                 <head></head>
                 <body>
                     <p>今天天气很好</p>
                     <div class="${className}">${str}</div>
                  </body>
               </html>`;
    console.log(html);

    //2. 数组的扩展
    //Array.from  作用:伪数组转化为真实的数组
    let allLis=document.querySelectorAll('li');
    console.log(allLis);
    console.log(Array.isArray(allLis));

    console.log(Array.from(allLis));
    console.log(Array.isArray(Array.from(allLis)));

    //Array.of   可将零零散散的转为数组
    console.log(Array.of(1, 2, 3, 4));
    console.log(Array.of('张三', '李素', '王五'));

    //3. 对象的扩展
    //如果key和vaalue是一样,写一个就够了
    //正常方式
    let obj={
        'name':'张娜',
        'age':20
    }
    console.log(obj);
    //
    let name='账单';
    let age=18;
    let obj1={
        'name':name,
        'age':age
    }
    console.log(obj1);
  //以上可简写为
    let name1='账单';
    let age1=18;
    let obj2={
        name,
        age
    }
    console.log(obj2);

    //4. Object.assign()   多个对象合成一个对象
    let obj4={name:'小明'};
    let obj5={age:13};
    let obj6={sex:'男'};
    let obj7={friends:'小话'};
    let obj8={};
    Object.assign(obj8,obj4,obj5,obj6,obj7);
    console.log(obj8);

    //5. 延展操作符    拆分成数组
    let str2='今天的天气很好';
    let strArr= [...str2];
    console.log(strArr);

    let student={
        name:'小军',
        age:15,
        sex:'男'
    }

    //面试题
    let myArr=[1,2,10,'张三',20,2,1];
    //console.log(new Set(myArr));
    console.log([...new Set(myArr)]);

</script>
</body>
</html>


课时12:Vue基础-函数扩展

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>10-模板字符串</title>
    <style>
       .test{
           width: 100px;
           height: 200px;
           background-color: red;
       } 
    </style>
</head>
<body>

<script>
    //1. 形参设置默认值

    //ES5
    function sum(num1,num2){
        num1=num1||10;
        num2=num2||10;
        console.log(num1+num2);
    }
    sum();//输出 20
    sum(10,20);//输出 30

    //ES6
    function sum1(num1=10,num2=10){
        console.log(num1+num2);
    }
    sum();//输出 20
    sum(10,20);//输出 30

    //2. 参数形式  延展操作符
    //ES5 中
    function sum2(){
        let result =0;
        for(let value of arguments){
            result +=value;
        }
        return result;
    }
    console.log(sum2(10, 20, 30));

    //ES6  延展操作符
    function sum3(...nums){
        let result =0;
        for(let value of nums){
            result +=value;
        }
        return result;
    }
    console.log(sum3(10, 20, 30));

    //多样化参数  传递
    function sum4(name,sex,...nums){
        let result =0;
        console.log(name);
        console.log(sex);
        for(let value of nums){
            result +=value;
        }
        return result;
    }
    console.log(sum4('张三','男',10, 20, 30));
</script>
</body>
</html>


 课时13:Vue基础-箭头函数

//箭头函数
    //  ()=>{}
    let sum = (num1,num2)=>{ return num1+num2 };
     console.log(sum(100, 300));
    let nameArr=['张三','李四','瓦努'];
    nameArr.forEach((value, index)=>{
        console.log(index+':'+value);
    });

    function demo (){
        setTimeout(function(){
            console.log(this);
        },1000);

        setTimeout(()=>{
            console.log(this);
        },1000);
    }

    let obj={};
    demo.call(obj);

课时14:Vue基础-promise

//Promise 结构
new Promise((resolve, reject)=>{
    $.ajax({
        url:'http://happymmall.com/user/get_user_info.do',
        type:'post',
        success(res){
            resolve(res)
        },
        error(err){
            reject(err)
        }
    });
}).then((res)=>{
    console.log('success',res);
}, (err)=>{
    console.log('error', err);
});


//链式Promise结构

var promiseFn1 = new Promise((resolve, reject)=>{
    $.ajax({
        url:'http://happymmall.com/cart/get_cart_product_count.do',
        type:'post',
        success(res){
            resolve(res)
        },
        error(err){
            reject(err)
        }
    });
});

promiseFn1.then(()=>{
    console.log('promiseFn1 success');
    return promiseFn2;
}).then(()=>{
    console.log('promiseFn2 success');
});

课时15:Vue基础-类和对象

//类的构造函数和方法
class Animal{
    constructor(){
        this.name='animal';
    }
    getName(){
        return this.name;
    }
}

let animal = new Animal();
console.log(animal.getName());

//动态设置参数
class Animal{
    constructor(name){
        this.name=name;
    }
    getName(){
        return this.name;
    }
}

let animal = new Animal('animal test');
console.log(animal.getName());

//类的继承
class Animal{
    constructor(){
        this.name='animal';
    }
    getName(){
        return this.name;
    }
}

class Cat extends Animal{
    constructor(){
        //子类使用extends关键字时,不能使用this了,要想使用,必须加上super(),这样才能共享一个this指针
        super();
        this.name='cat';
    }
}

let animal = new Animal();
let cat = new Cat();
console.log(animal.getName());
console.log(cat.getName());

//对象的写法
var name = 'Rose',
    age = 18;
var obj = {
    name: name,
    age: age,
    getName: function(){
        return this.name;
    },
    getAge: function(){
        return this.age;
    }
}

let name = 'Rosen',
    age = 18;
let obj = {
    //变量名可以直接用作对象的属性名称
    name,
    age,
    //对象里的方法可以简写
    getName(){
        return this.name;
    },
    //表达式可以作为属性名或方法名
    ['get' + 'Age'](){
        return this.age;
    }
}

//Object对象的扩展
Object.krys(obj); 
//返回对象的所有属性名,为数组   {"name","age","getName","getAge"}

课时16:Vue基础-ES6--模块化

index.html:

<!-- 告诉浏览器,js文件以模块化的方式引入 -->
<script type="module" src="./index.js></script>    

index.js

// import {str, obj, fn} from './module.js'

// // 默认值引入
// import foo from'./module.js'

// console.log('name:', obj.name);
// console.log('str:', str);
// console.log('fn:', fn);
// // 输出默认值
// console.log(foo)


import {str as string, obj, fn} from './module.js'

// 默认值引入
import foo from'./module.js'

console.log('name:', obj.name);
console.log('str:', string);
console.log('fn:', fn);

// 输出默认值
console.log(foo)

module.js

let str = 'string';
let obj = {
    name:'Rose'
};
let fn = () => {
    console.log('module test');
}
//输出变量? 输出对象
export {
    str,
    obj,
    fn
}

//default 表示模块会默认输出的东西
export default {a: 1}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值