• 复习


    ###异步编程


    js引擎是单线程的(浏览器是多进程 多线程的)
       进程:是操作系统分配资源(cpu的时间片)的最小单位
       线程:是进程内部的最小单元
       线程使用的资源是他所属的进程去抢的

      进程内部可以有多个线程
      这些线程共享资源
      多线程开发:
      A线程创建的变量,B线程可以读到,B线程也可以修改
      锁!!!!

    ###回调函数:

    一般回调函数都是一个匿名函数
    我们只想要定义回调函数 不需要调用
    最终函数会被js引擎自动调用(带条件)
    条件: 时间到了 用户触发了一些行为
    同步回调函数
          立马执行 只有等同步回调函数执行完毕 后续代码才可以继续执行
          arr.map(function(item,index,arr){})
    异步回调函数
        setTimeout(function(){},time)


       js代码只能由js引擎来执行.
       js引擎是单线程的 一个时间点只能执行一个任务(解析js代码);js引擎遇到异步代码(异步回调函数)选择通知浏览器开启异步线程
       让异步线程持有这个回调 在一定条件达成的情况下 异步线程将异步回调函数 塞到异步队列中 等待js引擎来轮询
       只要js引擎空闲下来就会去不断的轮询异步队列!!

    ###生命周期

       作用域的生命周期:
          函数定义的时候创建
          浏览器关闭的时候销毁
      执行上下文的生命周期:
          函数调用的时候创建
          函数调用结束之后被释放 下一轮垃圾回收机制运行时正式销毁
      闭包的生命周期:
          闭包有个必要的前提: 函数产生了嵌套,内部函数使用了外部函数的变量 就会产生闭包
          闭包在外部函数调用时创建的!!
          当内部函数被设置为null时 闭包被释放(游离) 下一轮垃圾回收机制运行时正式销毁

    ###闭包

      闭包有个必要的前提:
               函数产生了嵌套,内部函数使用了外部函数的变量 就会产生闭包
               当函数可以记住并访问自己的作用域链时就会产生闭包
       闭包什么时候被创建
               闭包在外部函数调用时创建的!!
       闭包什么时候销毁
               当内部函数被设置为null时 闭包被释放(游离) 下一轮垃圾回收机制运行时正式销毁
       闭包的位置
               内部函数的作用域
       闭包的作用
                延长外部函数变量的生命周期
       闭包的缺点
                容易产生内存泄漏
                前端没有高并发(没有多线程开发)
                不用太在意内存泄漏
       闭包的应用
                this的劫持
                模块化

       闭包和内部函数是一一对应的关系!!!!!!

    ###原型


           原型分显式原型 隐式原型
                     显式原型 js中所有的函数具有显式原型
                     隐式原型 js中所有的对象具有隐式原型
                     对象的隐式原型 指向其构造函数的显式原型

                     Fuction的__proto__指向Fuction的prototype
                     所有的原型对象都是一个{}
                     所有的原型对象.__proto__ === Object.prototype
                     Object.prototype.__proto__ === null
                     所有的原型对象都有一个constructor属性 指向原函数

    ###原型链

            隐式原型链

        为什么要有原型链

               属性的查找与设置

                    查找:先在对象的直接属性中找  找到了就返回   找不到就访问原型链    整条原型链都没有  返回undefined

                    设置:只影响对象的直接属性

       怎么用原型链

              继承

            a  instanceof b (a:对象   b:函数)

                   b的显式原型是否出现在了a的隐式原型链上

    ###方法的重写

         低层的原型对象上的属性    覆盖了   高层原型对象上的属性

    ###怎么判断一个对象是数组

        1.isArray

        2.Object.prototype.toString.call(Obj) 如果返回的字符串中包含Array 说明obj是数组 

        3.a instanceof Array 如果返回true就是数组

    ###对象的创建方式

         1.Object构造
         2.字面量
               前端在处理业务逻辑时 对类型的依赖性不强(将数据放到页面上进行展示)
               后台在处理业务逻辑时 对类型的依赖性很强(后台的数据和数据库中和每一张表进行对应)

         3.工厂模式
         4.自定义构造函数
         5.自定义构造函数+原型链
         6.Object.create(obj)
             创建处于一个已经被指定隐式原型指向的实例对象

    ###继承

        1.构造函数继承
             显式调用父类的函数
        2.原型链继承
            将子类的显式原型改成一个父类的实例对象
        3.组合继承
             构造函数继承(属性)+原型链继承(方法)
                方法:属性值为函数的属性

    ###this指向的优先级

         构造调用>显式调用>隐式调用>普通调用




















  • 相关阅读:
    (转)Android IPC机制详解
    (转)android 多线程
    (转)android进程间通信:使用AIDL
    (转)如何调用SQLITE工具查看数据库
    (转)Android 自动 打包
    (转)如何手动编译一个APK
    (转)编译Android源码的全过程
    Js打造层拖动实例:网站菜单拖拽移位效果
    JS鼠标悬停时动态翻滚的紫色导航条
    jQuery1.3.2竖向的伸缩菜单
  • 原文地址:https://www.cnblogs.com/fxiong/p/10163883.html
Copyright © 2020-2023  润新知