2020.8.28+王杉

学习内容:

  • 重载:相同函数名,不同参数列表的多个函数,在调用时,根据传入参数的不同,自动选择匹配的函数执行

    1. 重载的原因:减少API的数量,减轻调用者的负担。
    2. 重载问题:JS语法不支持重载,JS中不允许多个同名函数同时存在。
    3. 解决:arguments对象根据不同的参数,根据元素内容或个数进行判断进行什么操作。
  • 参数按值传参:

    1. 原始类型:两个变量间赋值时仅仅只是复制副本给对方,改变新变量的值,不会影响原变量的值。(number,string....)
    2. 引用类型:两个变量间赋值时,原对象复制地址给新变量,改变新变量修改对象则会改变原变量的对象。(对象,数组,函数)
  • 作用域和作用链:

    1. 作用域:(scope)变量可作用的范围,实质是一个对象。
    2. 全局作用域对象:全局作用域对象(window),保存全局变量 函数作用域对象:函数作用域对象(AO),保存局部变量
    3. 函数的生命周期:1.开始执行程序前:...2.函数定义时:...3.点用函数时:...4.调用后:...(详细需要去记下有印象)
    4. 作用链:各级作用域逐级引用,形成的链式结构,保存着所有的变量,控制着变量的使用顺序。
  • 闭包:既重用变量,又保护变量不被污染的机制(也是什么时候使用闭包的原因)。

    1. 闭包的形成:外层函数调用后,外层函数的作用域对象(AO),无法释放,被内层函数对象的scope引用着。

    2. 闭包的特点:①函数嵌套函数②内部函数有权访问外部函数的变量③参数变量不会被垃圾回收机制回收

    3. 闭包的好处:①不会造成全局变量污染②变量常驻在内存中③内部函数可以读取外部函数定义的局部变量(私有变量)

    4. 缺点:①比普通函数占用跟多内存,在IE中可能导致内存的泄露。 解决办法:在函数退出之前将不用的局部变量删除。

      ②闭包会在父函数外部,改变父函数内部变量的值,所以如果把父函数当做对象使用,会把闭包当做它的公用方法,把内部变量当做它的私有属性,所以使用时一定要小心,不要随便改变父函数内部变量的值。

  • 对象:对象是一组属性(property)和方法(method)的集合,对象属于引用类型数据

    1. 内置对象:ES标准中规定的,浏览器厂商已经实现的对象(官方提供的对象)
    2. 11个大标准:包装类型:专门封装原始类型的值,并提供操作值得API的对象。其中有:String Number Boolean Global(全局对象被window代替) Array Date Math RegExp Error Function Object
  • API:许多的东西要去熟悉,大概记住是干什么的。

  • 宿主对象:浏览器提供的对象 所有的DOM BOM都是。

  • 自定义对象:自定义对象就是自己创建的对象(对象字面量/内置构造函数/自定义构造函数)

  • 数组:创建数组 元素的访问

心得:

今天学习了函数的剩下的一些部分,然后就是进行练习,今天需要自己练习的东西挺多的,慢慢熟悉,然后就是对象和数组,都是一些理解的东西,需要自己去了解它们并使用,总的来说过了一遍,有很多细节需要自己下来去多写写理解才能记下来。

评论