Daniel Liu

I Need You To Tell Me That I’m A Good Person.

JS

2021年3月19日

JS

js 历史

js 的历史.png

分类

  • 基本数据类型
    • number
    • string
    • boolean:a&&b,两个为真才为 true,a||b,两个为假才是 false
    • symbol (ES6 新增)
    • undefined
    • null
  • 应用类型
    • object

区别数据类型的 api

  • typeof: 不能判断 null函数

  • instanceof

    1. 使用范围:只能判断引用类型

    2. 原理:通过原型链

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
           a instanceof b
      // 那么会这样比较
      //a.__proto__ === b.prototype ? 如果正确,返回 true
      //a.__proto__.__proto__ === b.prototype ? 返回 true
      // 直到 a.__proto__.__proto__ ... === null 返回 false
      ```- Object.prototype.toString.call ([]) => 返回"[object String]"### 按值传递与按引用传递的区别,进阶版```javascript
      var a = {n:1}
      var b = a
      a.x = a = {n: 2}
      console.log (b)
      console.log (a)
      ```重点是`a.x = a = {n: 2}` 如何处理?

      1. 从左向右执行
      2. 执行 a.x = a,就是让变量 a 指代的对象添加一个 x key, 并且让 x value 指向变量 a
      3. 执行 a = {n: 2}

      ### Falsy 值

      1. 0
      2. NaN
      3. ‘ ’
      4. undfined
      5. null

      > JS 惯例:如果不希望别人该你的东西,就把命名改为大写:Node.ELEMENT_NODE

      ### JS 实践

      批量删除微博脚本

      ```js
      'use strict';
      var s = document.createElement('script');
      s.setAttribute('src', 'https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js')
      s.onload = function () {
      for (var i = 0; i < 3; i++) {
      setTimeout(function () {
      $('a[action-type="fl_menu"]')[0].click();
      $('a[title="删除此条微博"]')[0].click();
      $('a[action-type="ok"]')[0].click();
      }, 1000 * i)
      }
      }
      document.head.appendChild(s);
不许转载😡!!!

Buy me a cup of coffee ☕.