zoukankan      html  css  js  c++  java
  • Js零散知识点笔记

    原型继承

    function Obj() {
    	this.val = 321
    }
    Obj.prototype.protoVal = 123
    
    let obj = new Obj()
    console.log(obj.val === 321) // obj 的属性
    console.log(obj.protoVal === 123) // 从 Obj 构造器的 prototype 继承的属性
    console.log(obj.__proto__ === Obj.prototype) // __proto__ 属性等于 Obj 构造器的 prototype
    function Con1() {}
    Con1.prototype.a = 123
    function Con2() {}
    Con2.prototype = new Con1() // 构造器 Con2 继承 Con1 的原型
    var obj = new Con2()
    obj.a // 123
    

      

      

    将类数组对象转换为数组

    ES5:

    var arrLike = document.querySelectorAll('span');
    var arr = Array.prototype.slice.call(arrLike);
    

    ES6:

    var arrLike = document.querySelectorAll('span');
    var arr = [...arrLike];
    

      

    任务执行顺序

    macro-task(宏任务) 取出一个任务,执行完后再执行下一个 macro-task 。每个 macro-task里面先执行普通代码,执行完后再执行 micro-task(微任务),micro-task 执行完后才执行下一个macro-task。setTimeout 等 macro-task 会将代码推入下一个 macro-task ,直到上次 macro-task 执行完毕才会执行代码。

    macro-task: script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering
    micro-task: process.nextTick, 原生Promise, Object.observe, MutationObserver

    Function.toString

    function fn() { 'abc' }
    fn.toString = function (arg) {
      return 123;
    }
    alert(fn);
    console.log(fn == 123);
    console.log(fn === 123);

    第一个 alert 打印的是 123, alert 方法会调用 toString 方法,所以打印的是 123 。

    第二个 console.log 则是隐式转换,触发了 fn.toString, 所以打印的是 true。

    第三个 console.log 没有隐式转换,所以打印的是 false。

  • 相关阅读:
    注解方式整合mybatis & SpringBoot整合分页助手 & SpringBoot整合JSP
    xml方式整合mybatis
    @SpringBootApplication&多环境配置&引入外部配置信息
    用例图&类图
    OOP特性介绍&域模型&静态建模和动态建模
    Git标签
    Git分支
    zabbix监控es集群健康状态(python2.7)
    Django使用问题记录
    failed to update local proxy configuration copy: unexpected field "hosts.available"解决
  • 原文地址:https://www.cnblogs.com/NKnife/p/6226019.html
Copyright © 2011-2022 走看看