• ES6


    箭头函数:

     1     <!--
     2         以前js的一些知识  不知道的还是很多的
     3     -->
     4     <script>
     5     const obj = {
     6         aaa() {
     7             setTimeout(function () {
     8                 setTimeout(function (){
     9                      console.log(this) //window
    10                 })
    11 
    12                 setTimeout( () => {
    13                     console.log(this) //window
    14                 })
    15             })
    16 
    17             setTimeout(() => {
    18                 setTimeout(function (){
    19                     console.log(this) //window
    20                 })
    21 
    22                 setTimeout(() => {
    23                     console.log(this) //obj
    24                 })
    25             })
    26         }
    27     }    
    28     
    29     </script>

     https://www.cnblogs.com/gaoya666/p/9070981.html#const 

    sync 同步 async异步

    promise 异步处理

        <script>
            /*关于 setTimeout的异步 https://blog.csdn.net/rememberyf/article/details/80064115
            setTimeout(() => {
                console.log('hello world')
            }, 1000)
            
            就是说 promise是个类 新建:new Promise(函数) 身为参数的函数(在此是回调函数)也有两个参数resolve reject这俩也是函数
            new Promise((resolve, reject) => {
            //异步操作的代码写在这里就好
                setTimeout(() => {
                     resolve() //一旦你调用了resolve函数 就会来到下面的then函数 可以把要执行的代码放在then函数里
                },1000)
            }).then( () => {
    
            })*/
            new Promise((resolve, reject) => {
    //异步操作之后会有三种状态 setTimeout(()
    => { //成功的时候调用resolve resolve('hello world') //失败的时候调用reject reject('error message') }, 1000) }).then((data) => { console.log(data) console.log(data) console.log(data) console.log(data) console.log(data) }).catch(err => { console.log(err) }) </script> <!-- resolve 直接转入函数then 在then里处理具体代码 可以在resolve函数里放参数 会直接转给then函数的 then的data就是resolve的helloworld reject 转入catch函数 不会去then函数的 同理也是 参数会转给catch函数 -->

     

    另一种写法
    <
    script> new Promise( (resolve,reject) => { setTimeout( () => { resolve('hello vue.js') reject('errso message') },1000) }).then( data => { console.log(data) }, err => { console.log(err) }) </script>
    promise all属性
        <script>
            Promise.all([ //参数是个数组 需要几个异步请求一起发就几个元素
                new Promise((resolve, reject) => {
                    /*$.ajax({
                        url: 'url1',
                        success: function (data) {
                            resolve(data)
                        }
                    })*/
                    setTimeout(() => {
                        resolve({ name: 'why', age: 18 })
                    }, 2000)
                }),
    
                new Promise((resolve, reject) => {
                    /*$.ajax({
                        url: 'url2',
                        success: function (data) {
                            resolve(data)
                        }
                    })*/
                    setTimeout(() => {
                        resolve({ name: '', part:'你呼吸蓝丝绒包裹身体 和海洋的哼鸣' })
                    }, 1000)
                })
            ]).then(results => { //在所有请求都回来之后执行
                //reults也是个数组 存储发送异步请求 请求回来的信息
                console.log(results[0])
                console.log(results[1])
            })
    /*
    Object
    age: 18
    name: "why"
    __proto__: Object
    
    Object
    name: "溯"
    part: "你呼吸蓝丝绒包裹身体 和海洋的哼鸣"
    __proto__: Object
    */
        </script>
    

    var:允许重复定义,无法限制概念,没有块级作用域的概念

    let:不能重复声明,变量-值可以更改,块级作用域,

    const:不能重复声明,常量-值不可更改,块级作用域,一旦声明变量,就必须立即初始化,不能留到以后赋值

     

            之前:function xx(参数){
          }
           or let sc = function(参数){
          }
           箭头函数:(参数) =>{
               当参数就一个,省略() 函数体就一句return 省略{}
          }

    参数拓展:

    1. 收集剩余参数,必须是最后一个形参

    2. 展开数组

        <script>
         function show(a,b,...args){ //由于js接参数接的都是个数组,所以传参传多少个都可以 ...args必须放最后,后面不能再有其他参数
             alert(a);
             alert(b);
             alert(args); //5,6,7 剩余参数
        }
       show(2,3,5,6,7,12);
       </script>
        <script>
       let arr = [1,2,3];
       let pnly = (n1,n2,n3) =>{
           alert(n1);
           alert(n2);
           alert(n3);
      }
       pnly(...arr);//===等价于pnly(arr[0],arr[1],arr[2])

       let brr = ['我','爱','我'];
       let crr = [...arr,...brr];
       alert(crr);//1,2,3,我,爱,我
       </script>

     

    jquery.animate()

    方法执行 CSS 属性集的自定义动画。

    该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。

    只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")。

    <!DOCTYPE html>
    <html lang="en">

    <head>
       <meta charset="UTF-8">
       <script type="text/javascript" src="jquery-1.11.1.min.js"></script>
       <title>Document</title>
       <style>
          .box {
               background-color: red;
               height: 100px;
               width: 100px;
               margin: 6px;
          }
       </style>
       <script>
           $(document).ready(function () {
               $('#btn1').click(function () {
                   $(".box").animate({
                       height: "300px",
                       width: "200px"
                  });
              });
               $('#btn2').click(function () {
               $('.box').animate({
                   height: "100px"
              })
          })
          })
       </script>
    </head>

    <body>
       <div class="box"></div>
       <button id="btn1">Animate</button>
       <button id="btn2">reset</button>

    </body>

    </html>

     

    解构赋值

    1. 左右两边结构必须一样

    2. 右边必须是合法的结构

    3. 声明和赋值不能分开

        <script>
          let {a,c,d} = {a:12,c:5,d:6};//左边是个json 右边也得是
          console.log(a,c,d);

          //let {f,e} = {12,4}; //等号右边是不合法的类型
         // console.log(f,e);

         let [m,n];
        [m,n] = [12,3]; //错误 声明和赋值必须在一行
       </script>

    数组

    新方法:map() / reduce() / filter() / forEach()

        <script>
       let arr = [12,5,8];
       let result = arr.map(item => item*2);
       console.log(result);
       </script>
        <script>
           let arr=[12,69,180,8763];
           let result=arr.reduce(function (tmp,item,index){
               if(index!=arr.length-1){
                   return tmp+item;
              }else{
                   return (tmp+item)/arr.length;
              }
          });
           alert(result);

       </script>
        <script>
           let arr = [23,45,9,14,3];
           let result = arr.filter(item => item%3==0)
           console.log(result);//45 9 3
       </script>
         <script>
         let arr=[12,5,8,9];
         arr.forEach((item,index) =>{
             alert(index+':'+item);
        })
        </script>

    字符串

    新方法:startswith() / endswith()

        <script>
       let str="http://www.baidu.com";
       if(str.startsWith('http://')){
           alert('普通网址');
      }else if(str.startsWith("https://")){
           alert('加密网址');
      }else{
           alert("其他");
      }

    endswith let str='1.txt';
       </script>

    字符串模板:`` js里单双引号没区别

        <script>
       let a = 12;
       let str = `a${a}bc`;
       alert(str); //a12bc ``可以直接把东西塞到字符串里面

       let title='标题';
       let content='内容';
       let connection='<div>
         <h1>'+title+'</h1>
         <P>'+content+'</p>
         </div>';
       alert(connection); //之前的字符串拼接 折行还得

       let str2 = `<div>
       <h1>${title}</h1>
       <p>${content}</p>
       </div>`;
       alert(str2); //用了`` 可以折行
       </script>

    ES6的面向对象

    1. 原来的面向对象

     <script>
           //老式的面向对象的写法
           function User(name,pass){ //这个既是类又是构造函数
               this.name=name;
               this.pass=pass;
          }
           User.prototype.showName=function (){
               alert(this.name);
          }
           User.prototype.showPass=function (){
               alert(this.pass);
          }

           let u1 = new User('bu',123);
           u1.showName();
           u1.showPass();
           
           //js里的继承
           function VipUser(name,pass,level){
               User.call(this,name,pass); //没有专门的继承语法,只得这样
               this.level = level;
          }
           VipUser.prototype=new User();//
           VipUser.prototype.constructor=VipUser;
           VipUser.prototype.showLevel=function(){
               alert(this.level);
          }

           let v1= new VipUser('山山',12,3);
           v1.showName();
           v1.showPass();
           v1.showLevel();
       </script>
    <script>
       //ES6
           class User { //ES6: 类
               constructor(name, pass) { //专门的构造器
                   this.name = name;
                   this.pass = pass;
              }
               showName() { //类里直接添方法
                   alert(this.name);
              }
               showPass() {
                   alert(this.pass);
              }
          }
           let u1 = new User('bu', 123);
           u1.showName();
           u1.showPass();

           //继承
           class VipUser extends User {
               constructor(name, pass, level) {
                   super(name, pass);
                   this.level = level;
              }
               showLevel() {
                   alert(this.level);
              }
          }

           let v1 = new VipUser('山山', 12, 3);
           v1.showName();
           v1.showPass();
           v1.showLevel();
       </script>

     

  • 相关阅读:
    2015年第5本(英文第4本):Death on the Nile尼罗河上的惨案
    2015年第4本(英文第3本):Godfather教父
    2015年第3本(英文第2本):Daughter of Deceit
    2015年第2本(英文第1本):《The Practice of Programming》
    2015年第1本读书行动笔记:《把你的英语用起来》
    GTD桌面2.0
    独立博客开张!有关读书、GTD和IT方面的内容将发布在新网站上
    2015计划
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/yundong333/p/11364924.html
Copyright © 2020-2023  润新知