zoukankan      html  css  js  c++  java
  • JS冷门知识盘点

    (+new Date()

    是简略写法,得到毫秒

     

    超过多行显示省略号

    1. overflow : hidden;
    2. text-overflow: ellipsis;
    3. display: -webkit-box;
    4. -webkit-line-clamp: 2;
    5. -webkit-box-orient: vertical;

     

     

     

    构造函数才有prototype(可以构造其它对象);

    对象的__proto__ 指向其构造函数的prototype属性,构造函数的prototype有个constructor属性指向构造函数本身。

     

     

    Number,String,Object的__proto__都指向Function的prototype

     

    indexOf()   第二个参数只开始查找的位置(含此位置),默认为0;

    lastIndexOf()  为某个字符最后出现的位置,从后往前查找;

     

    isPrototypeOf()   是否是原型

    hasOwnProperty()  判断自身的属性还是继承来的

    in运算符   in运算符可以用来判断,某个实例是否含有某个属性,不管是不是本地属性。

     

     

    document in  window      //false;

    ‘document’ in window    //true;

     

     

    ‘ssssss  instanceOf String        //false

     

    var  a = new String(‘sssssss’);

    a  instanceOf String;                 //true;

     

     

    调用resolvereject并不会终结 Promise 的参数函数的执行。

    new Promise((resolve, reject) => {
      resolve(1);
      console.log(2);
    }).then(r => {
      console.log(r);
    });
    // 2
    // 1



    then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。

    getJSON("/posts.json").then(function(json) {
      return json.post;
    }).then(function(post) {
      // ...
    });


    如果异步操作抛出错误,状态就会变为rejected,就会调用catch方法指定的回调函数,处理这个错误。另外,then方法指定的回调函数,如果运行中抛出错误,也会被catch方法捕获。


    下面两种写法是等价的。

    // 写法一
    const promise = new Promise(function(resolve, reject) {
      try {
        throw new Error('test');
      } catch(e) {
        reject(e);
      }
    });
    promise.catch(function(error) {
      console.log(error);
    });
    
    // 写法二
    const promise = new Promise(function(resolve, reject) {
      reject(new Error('test'));
    });
    promise.catch(function(error) {
      console.log(error);
    });
    

    比较上面两种写法,可以发现reject方法的作用,等同于抛出错误。

    如果 Promise 状态已经变成resolved,再抛出错误是无效的。

    const promise = new Promise(function(resolve, reject) {
      resolve('ok');
      throw new Error('test');
    });
    promise
      .then(function(value) { console.log(value) })
      .catch(function(error) { console.log(error) });
    // ok
    

    上面代码中,Promise 在resolve语句后面,再抛出错误,不会被捕获,等于没有抛出。因为 Promise 的状态一旦改变,就永久保持该状态,不会再变了。

    Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获。

    一般来说,不要在then方法里面定义 Reject 状态的回调函数(即then的第二个参数),总是使用catch方法。

    一般总是建议,Promise 对象后面要跟catch方法,这样可以处理 Promise 内部发生的错误。catch方法返回的还是一个 Promise 对象,因此后面还可以接着调用then方法。

     
     
  • 相关阅读:
    HTTP和SOAP完全就是两个不同的协议
    RabbitMQ七:交换机类型Exchange Types--Fanout 介绍
    日志级别简述
    RabbitMQ六:通过routingkey模拟日志
    http协议无状态中的 "状态" 到底指的是什么?!
    MySQL-时间(time、date、datetime、timestamp和year)
    API系列一:REST和RESTful认识
    Ref 和 Out 区别(演练代码)
    RabbitMQ五:生产者--队列--多消费者
    RabbitMQ四:生产者--队列--消费者
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/8361624.html
Copyright © 2011-2022 走看看