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。

  • 相关阅读:
    LeetCode 152. 乘积最大子数组 | Python
    LeetCode 31. 下一个排列 | Python
    LeetCode 136. 只出现一次的数字 | Python
    LeetCode 102. 二叉树的层序遍历 | Python
    LeetCode 155. 最小栈 | Python
    LeetCode 69. x 的平方根 | Python
    Python3 高阶函数
    Python3 装饰器
    Python3 递归函数
    Python3 函数
  • 原文地址:https://www.cnblogs.com/NKnife/p/6226019.html
Copyright © 2011-2022 走看看