1. Vue - ES6

一、ES6部分知识点

1. 变量声明

<!-- var声明变量,导致变量提升 -->
var name = 'ruanyifeng'
function func(){
    console.log(name)
    if (false){
        var name = 'Bob'
    }
}
func()
----------
undifined

let:特点
(1)let声明不存在变量提升的问题
(2)let声明的变量只能在当前代码块生效
(3)let不能重复什么变量

var name = 'ruanyifeng'
function func(){
    console.log(name)
    if (false){
        let name = 'Bob'
    }
}
func()
----------
ruanyifeng

2. 常量

const
(1)声明的同时必须赋值
(2)不能修改
(3)同let一样只能在当前声明的代码块里生效

3. 模板字符串

python3.6:	
name = 'ruanyifeng'
str = f'my name is {name}'

js:
let name = 'ruanyifeng'
let str = `my name is ${name}`

4. 对象单体模式

let obj = {
    say:function(){
        console.log('Hello');
    }
}
obj.say()
----------
Hello
let objNew = {
    say(){
        console.log('Hello');
    }
}
objNew.say()
-----------
Hello

5. 箭头函数

(1) 箭头函数基本特点

​ 箭头函数this为父作用域的this,不是调用时的this。箭头函数的this永远指向其父作用域,任何方法都改变不了,包括call,apply,bind。普通函数的this指向调用它的那个对象。

let person = {
    name:'jike',
    init:function(){
        // 为body添加一个点击事件,看看这个点击后的this属性有什么不同
        document.body.onclick = ()=>{
            // this在浏览器默认是调用时的对象,可变的?   
            alert(this.name);               
        }
    }
}
person.init();

备注:init是function,以person.init调用,其内部this就是person本身,而onclick回调是箭头函数,
其内部的this,就是父作用域的this,就是person,能得到name。
let person = {
    name:'jike',
    init:()=>{
        // 为body添加一个点击事件,看看这个点击后的this属性有什么不同
        document.body.onclick = ()=>{
            // this在浏览器默认是调用时的对象,可变的?  
            alert(this.name);                
        }
    }
}
person.init();

备注:init为箭头函数,其内部的this为全局window,onclick的this也就是init函数的this,也是window,
得到的this.name就为undefined。

二、ES6推荐链接

http://es6.ruanyifeng.com/
https://www.cnblogs.com/mengff/p/9656486.html
posted @ 2019-09-08 17:12  qi.hu  阅读(139)  评论(0编辑  收藏  举报