JS 检测数据类型的 4 种方法

检测数据类型4种方法

  1. typeof:
    typeof可以得到的值: number、string、undefined、boolean、object、function。
    直接通过typeof判断的类型:number、string、undefined、boolean、function。

  2. A instanceof B:判断B在不在A的原型链上 (一般不会判断数据类型)。

  3. ===:因为null和undefined类型都是只有 唯一的值 所以可以通过===来判断null和undefined类型。

  4. Object.prototype.toString(): Object.prototype.toString.call(arr).slice(8,-1).toLowerCase();

谈一谈 this

  1. 什么是this?

    1. 一个关键字,是一个引用变量。
    2. 函数中可以出现 this(全局的 this 指向 window)。
    3. this 指向其所在函数的调用者,如果没有调用者则指向 window。
    4. this 的指向是在调用函数的时候确定的。
  2. this 指向(其实就是看函数的调用方式)

    1. this 默认绑定(函数默认调用)。
    2. this 指向调用函数的上下文(函数是上下文调用的)。
    3. 注意隐式丢失现象 (通过一个上下文对象拿到了一个函数,但是没有调用,而是赋值给了其他人)。
    4. this 指向实例化对象(函数实例化调用)。
    5. 强制绑定,this 指向call、apply、bind修改的对象(函数是call、apply、bind调用的)。

谈一谈call()、apply()、bind()

call()

  1. 在使用一个指定的 this 值 和 指定的若干个参数的前提下 调用了某个函数。
  2. 作用:
    1. 调用函数 。
    2. 改变函数的上下文(this指向)。
  3. fn.call(thisArg,arg1,arg2,arg3,…):
    1. thisArg就是指定的 this 值。
    2. 如果 fn 需要参数,则依次在 call 的第二个参数开始传参。
  4. 执行的 this 值可能性:
    1. null 和 undefined:把 this 指向 window。
    2. 基本类型值:把 this 指向当前值的包装对象。
    3. 对象类型:把 this 指向当前对象。

apply()

语法与 call() 方法的语法几乎完全相同,唯一的区别在于,apply 的第二个参数必须是一个包含多个参数的数组(或类数组对象)。

bind()

  1. bind 语法和 call 一样。
  2. 但是 bind 并不会去调用函数,而是改变了函数的 this 执行,并返回改变 this 指向后的函数。

谈一谈回调函数

  1. 函数是我们自己声明的。
  2. 我们没有主动调用它(加小括号调用)。
  3. 但是最后却执行了。
  4. 常见回调函数:计时器 事件函数 ajax 回调函数。

分析点操作符和中括号操作符

访问和设置对象内部的数据:

  1. 点操作符:

    1. 成员访问,读取会自动把点操作符后边的内容读成字符串格式。
    2. obj.fn : 会把 fn 读成字符串 不可能把 fn 当作一个变量。
  2. 中括号操作符:

    1. 中括号操作符里边可以书写变量 也可以书写字符串,如果是变量就会解析成字符串。
    2. obj[fn]: 把 fn 当作一个变量,先读取 fn 变量代表的值 然后再获取 obj 的这个属性。
    3. obj['fn']: 直接读取 obj 的 fn 属性。
  3. 什么时候用中括号

    1. 一般来说都使用点操作符,特殊情况下用中括号。
    2. 特殊情况:
      1. key是一个变量 obj[a]
      2. key是非法字符 obj["my-name"]

猜你喜欢

转载自blog.csdn.net/weixin_47021982/article/details/113897324
今日推荐