JS高级

时间:2019-08-18
本文章向大家介绍JS高级,主要包括JS高级使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

类型判断

  • typeof:

    • 可以判断:undefined/数值/字符串、布尔值、function

    • 不能判断: null与object object与array

  • instanceof

    • 判断对象的具体类型

  • ===

    • 可以判断:undefined,null

1.undefined与null的区别?

  undefined代表定义未赋值

  null定义并赋值,只是值为null

2.什么时候给变量赋值给null?

  初始赋值,表明赋值为对象

  结束前,使对象成为垃圾对象

内存分类

  • 栈: 全局变量/局部变量

  • 堆: 对象(对象名为变量,存在栈内存中

内存,变量,数据三者之间的关系

  • 内存用来存储数据的空间

  • 变量是内存的标识

如何访问对象内部数据?

  • .属性名:编码简单,有时不能用

  • ['属性名']:编码简单,能通用

 什么时候使用['属性名']的方式?

  1.属性名包含特殊字符:- 空格

  2.属性名不确定

      var p = {}
     var propName = 'myAge'
     var value = 18
     p.propName =value //不能用
   p[propName] = value

关于引用变量赋值问题

  • n个引用变量指向同一个对象,通过一个变量修改对象内部数据,其他所有变量看到的是修改之后的数据。

  • 2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个引用变脸依然指向前一个对象

函数

  如何执行函数

    • test():直接调用

    • obj.test():通过对象调用

    • new test():new调用

    • test.call/apply(obj):临时让test成为obj的方法进行调用(可以让一个函数成为指定任意对象的方法进行调用

回调函数

  • 什么函数才是回调函数?

    • 你定义的

    • 你没有调用

    • 但它最终执行了(在一定条件下或某个时刻)

  • 常用的回调函数

    • dom事件回调函数

    • 定时器回调函数

    • ajax请求回调函数(后面讲解)

    • 生命周期回调函数(后面讲解)

  1.$是一个函数   2.$执行后返回的是一个对象

函数中的this

  1. this是什么?

    • 一个关键字, 一个内置的引用变量

    • 在函数中都可以直接使用this

    • this代表调用函数的当前对象

    • 在定义函数时, this还没有确定, 只有在执行时才动态确定(绑定)的

  1. 如何确定this的值?

    • test()

    • obj.test()

    • new test()

    • test.call(obj)

    本质上任何函数在执行时都是通过某个对象调用的

关于语句中的分号问题

  1. js一条语句的后面可以不加分号

  2. 是否加分号是编码风格问题, 没有应该不应该,只有你自己喜欢不喜欢

  3. 在下面2种情况下不加分号会有问题

    • 小括号开头的前一条语句

    • 中方括号开头的前一条语句

  4. 解决办法: 在行首加分号

  5. 强有力的例子: vue.js库

原文地址:https://www.cnblogs.com/yaokai729/p/11371867.html