zoukankan      html  css  js  c++  java
  • Vue(一)之ES6基础

    01-先了解ES6语法

    1.声明变量let和const

    <script type="javascript">
    
        //es5声明变量 var 先声明,后赋值
        //var a = 10;
        //console.log(a);
    
        //因变量提升 导致 1.var声明的变量属于 全局作用域;
        //2.var声明的变量存在覆盖现象;
        var a;
        console.log(a);
        {
            a = 20;
            //var a = 30;
        }
        console.log(a);
    
        //打印结果:i=10
        for (var i = 0; i<10; i++){
    
        }
        console.log(i);
    
        //es6声明变量 let和const
        //let 声明变量的好处:1.属于局部作用域;2.没有覆盖现象
        //const 声明的是 常量, 1.这个常量一旦声明 就不可修改;2.局部作用域;
        const pai = 3.14;
    </script>

    2.模板字符串

    语法:` ${变量名} `

    注:` ` 是tab键上面的反引号。

    <body>
    <ul>
        <li>
            <a href="javascript:;">
                <img src="" alt="">
            </a>
        </li>
    </ul>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script type="javascript">
        //es6模板字符串
        /*
        let name='hyp';
        let age=18;
    
        // `` 使用反引号
        let desc=`${name}的年龄是${age}`;//'hyp的年龄是18'
        console.log(desc);
        */
    
        //示例
        let imgSrc = './1.png';
        $(function () {
            $('ul').append(
                `<ul>
                    <li>
                        <a href="javascript:;">
                            <img src="${imgSrc}" alt="">
                        </a>
                    </li>
                </ul>`
            );
        })
    </script>
    </body>

    3.函数的书写

     es6箭头函数的书写:

    function() {} 等价于 ()=>{}
    
    箭头函数的使用 带来的问题:
        1.使用使用箭头函数this的指向发生了改变
        2.使用箭头函数 arguments 不能使用
    <script type="text/javascript">
        /*
        普通函数
        function add(a,b) {
            return a+b;
        };
    
        alert(add(1,2));
        */
        
        /*
        // 函数对象
        var add  = function (a,b) {
            return a+b;
        };
    
        alert(add(3,4))
        */
    
        /*
        var add = (a,b)=>{
            return a+b;
        };
        alert(add(3,7))
        */
    
        /*
        var person = {
            name:"alex",
            age: 20,
            fav:function () {
                console.log('喜欢AV');
                // this指的是当前的对象
                console.log(this.age);
            }
        };
    
        person.fav();
        */
    
        /*
        var person = {
            name:"alex",
            age: 20,
            fav: () => {
                // this的指向发生了改变,指向了定义person的父级对象 window
                console.log('喜欢AV');
                console.log(this);
            }
        };
    
        person.fav();
        */
        /*
        var person = {
            name:"alex",
            age: 20,
            fav: function () {
                console.log('喜欢AV');
                // this指的是当前的对象
                console.log(this);
                console.log(arguments[0])
            }
        };
    
        person.fav('哈哈哈');
        */
        var person = {
            name:"alex",
            age: 20,
            fav: (content) =>{
                // this的指向发生了改变,指向了定义person的父级对象 window
                console.log('喜欢AV');
                
                console.log(this);
           //arguments 是实参,此处结果为 undefined
    // console.log(arguments) } }; person.fav('哈哈哈'); </script>

    4.对象的创建

    es6中对象的单体模式

    fav(){} 等价于 function fav(){} 等价于 var fav = function(){}
    <script type="text/javascript">
        
        // 字面量方式创建对象
        /*
        var person = {
            name:"alex",
            age: 20,
            fav:function () {
                console.log('喜欢AV');
                // this指的是当前的对象
                console.log(this.age);
            }
        };
    
        person.fav();
        */
    
        // es6中对象的单体模式
        var person = {
            name:"alex",
            age: 20,
            fav(){
           //此处的this 指的是 当前对象Object;
           //使用单体模式 解决了 箭头函数的this指向的问题 和 arguments 也可以使用了 console.log(
    this); console.log(arguments); } }; person.fav(); </script>

    5.es6中类的概念class

    <script type="text/javascript">
        
        /*
        function Person(name,age){
            this.name = name;
            this.age = age;
        }
    
        Person.prototype.showName = function(){
            alert(this.name);
        };
    
        // 使用new关键字来创建对象
    
        var p = new Person('alex',19);
        p.showName()
        */
        
        
        // es6中创建对象的方式 使用class
        class Person{
         //constructor 相当于 __init__ constructor(name,age){
    this.name = name; this.age = age; }
         //函数 showName(){ alert(
    this.name); } }   // 相当于实例化对象 var p2 = new Person('张三',20); p2.showName(); </script>

     6.global对象

    ES5 的顶层对象,本身也是一个问题,因为它在各种实现里面是不统一的。
      1.浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。
      2.浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。
      3.Node 里面,顶层对象是global,但其他环境都不支持。

    同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用this变量,但是有局限性。   1.全局环境中,this会返回顶层对象。但是,Node 模块和 ES6 模块中,this返回的是当前模块。   2.函数里面的this,如果函数不是作为对象的方法运行,而是单纯作为函数运行,this会指向顶层对象。但是,严格模式下,这时this会返回undefined。   3.不管是严格模式,还是普通模式,new Function('return this')(),总是会返回全局对象。
       但是,如果浏览器用了 CSP(Content Security Policy,内容安全策略),那么eval、new Function这些方法都可能无法使用。 综上所述,很难找到一种方法,可以在所有情况下,都取到顶层对象。下面是两种勉强可以使用的方法。
    // 方法一
    (typeof window !== 'undefined'
       ? window
       : (typeof process === 'object' &&
          typeof require === 'function' &&
          typeof global === 'object')
         ? global
         : this);
    
    // 方法二
    var getGlobal = function () {
      if (typeof self !== 'undefined') { return self; }
      if (typeof window !== 'undefined') { return window; }
      if (typeof global !== 'undefined') { return global; }
      throw new Error('unable to locate global object');
    };
    // CommonJS 的写法
    require('system.global/shim')();
    
    // ES6 模块的写法
    import shim from 'system.global/shim'; shim();

    上面代码可以保证各种环境里面,global对象都是存在的。

    // CommonJS 的写法
    var global = require('system.global')();
    
    // ES6 模块的写法
    import getGlobal from 'system.global';
    const global = getGlobal();

    上面代码将顶层对象放入变量global

  • 相关阅读:
    Kubernetes---启动及退出动作
    Kubernetes---容器探针
    Kubernetes---容器的生命周期
    红米3 SudaMod(android_6.01_r72)高配指纹/农历/归属地/SM天气/流畅运行/红外线正常/更新于20161025
    解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”
    教你一招:Excel中使用MID函数获取身份证中的出生年月日
    解决: Sudamod/CM-13.0 源代码出现 Fatal: duplicate project .....问题
    使用jquery为个人博客园首页公告栏添加用户登录与注销
    使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
    使用iquery为博客园(或网站)添加动态显示时间(格式为:年 月 日 时间 星期几)
  • 原文地址:https://www.cnblogs.com/pgxpython/p/9883601.html
Copyright © 2011-2022 走看看