js学习笔记

JS学习

1.入门

入门初步

  • 脚本

    • 可再现的重复一个设定的规程
    • 需要解释器来执行
    • 方便、快速、经常地被修改
  • js是什么?

    • 脚本,实现复杂的网页功能

    • 是web技术蛋糕的第三层

      • html:标记语言,结构化网页的内容并赋予内容含义
      • css:样式规则语言,设置html中的显示样式
      • js:创建动态更新的内容,控制多媒体等
  • js可以做什么

    • api

      • 浏览器api (Browser apis)

        • 内建于web浏览器中,可以使周围数据暴露出来,也可以实现复杂工作
      • 第三方API

        • 没有默认嵌入浏览器中,需要从网络上获取代码和信息
        • 如:新浪微博api,高德地图api等
  • js如何工作

    • 执行过程

      • 1.html和css集合组装成一个网页
      • 2.浏览器的javaScript引擎将执行js代码
  • 特点及对比

    • 浏览器安全

      • 每个浏览器标签页是独立容器
      • 用于运行代码,大部分独立运行
    • js的运行次序:从上往下

    • 解释代码和编译代码

      • 解释代码(JS)

        • 代码自上而下运行,且实时返回结果
        • 无需由浏览器转化为其他形式
      • 编译代码

        • 运行前需要转化为另外的形式,才能执行,如C先编译成汇编语言,再执行
    • 服务器端代码和客户端代码

      • 服务器端代码

        • 在服务器上运行
        • 浏览器将结果下载并展示
      • 客户端代码

        • 在用户电脑上运行
        • 浏览网页时,进行下载,然后由浏览器进行运行和展示
    • 动态代码和静态代码

      • 静态:没有动态内容更新的网页
      • 动态:按需生成新内容更新展示
  • 怎么添加js:

  • 内联js处理器——不要使用

  • 脚本调用的策略

    • 如何让时机符合预期:js在预操作的html之前加载会出错

    • 解决方式

      • 内部js:添加事件-DOMContentLoaded,HTML文档加载、解释完毕后,触发

      • 外部js:async-异步。遇到script后不要中断后续html内容的加载。

      • async和defer

        • async

          • 只能用于外部脚本
          • 不会阻塞页面渲染,而是直接下载后运行
          • 当脚本之间相互独立且不依赖于本页面的其他脚本时,使用
        • defer

          • 规定脚本之间的调用顺序
          • 按照所需顺序置于html中
  • 注释:相同,//和/**/

  • 查找并解决js代码的错误

    • 语法错误
    • 逻辑错误

    变量

    • let和var的区别

      • var可变量提升:初始化之后,用var声明
    • 动态类型

    2.基础要件

    条件

    • if else/switch

    代码循环

    • for/do while/while

    函数

    • 作用域

      • 函数作用域

      • 全局作用域

        • 所有函数外部的区域
    • 函数调用符-()

      • 直接调用的时候,加()
      • 匿名函数代码不直接运行

    3.对象

    面向对象的js

    • 构建函数

      • 定义对象和特征
      • 将对象的数据和特征函数按需联结到相应的对象
      • 命名:大写字母开头
    • 创建对象的方法

      • 函数,返回对象:createAPerson()

      • 构建函数:new Person()

      • new Object()

      • Object.create()

        • 版本兼容性

    对象原型

    • 原型链

      • 每个对象拥有一个原型对象,对象以其原型对象为模板、从原型继承方法和属性。原型对象也可能拥有原型,从中继承方法和属性。一层一层、以此类推。
      • 解释了为何一个对象会拥有定义在其他对象中的属性和方法
      • 这些属性和对象定义在Object的构造器函数是那个的prototype属性上
      • 对象的实例和它的构造器之间建立一个链接(_proto_属性/Object.getPrototypeOf(obj)),通过上溯原型链找到属性和对象
    • prototype属性

      • 原型对象:_proto_进行访问
      • prototype:指向一个对象,定义需要被继承的成员
    • create()原理

      • 从指定原型对象创建一个新对象
      • 新的对象的原型对象为旧对象
    • constructor属性

      • 创建新的实例:new Person.contructor();
    • 修改原型

      • prototype属性的值

        • 在构造器/函数中定义属性
        • 在prototype中定义方法

    继承

    • 1.call(this,参数/可为空)

      • Teacher(){Person.call(this,name)}
    • 2.create方法

      • 1.create 原型函数 Teacher.prototype =Object.create(Person.prototype)
      • 2.设置正确的构造方法 Teacher.prototype.constructor = Teacher
    • 3.重写方法

      • Teacher.prototype.greeting= function(){}

    json(Java Script Object Notation)——数据传输格式

    • 格式转化

      • string转对象:JSON.parse(jsonString)
      • 对象转string:JSON.stringify(myJson)

    4.异步js

    异步编程概念

    • 不连续执行的任务

    异步js

    • 回调函数-ajax()

      • 优点:简单、容易理解和实现

      • 缺点

        • 代码不利于阅读和维护,耦合性高,流程难以追踪。
        • 不能捕获异常,不能直接return
    • 事件监听:执行顺序取决于某个事件是否发生

    合作异步js

    • 一段时间后运行:setTimeOut()

      • let myGreeting = setTimeout(funtionName,time,‘参数’)
      • clearTimeout(myGreeting)
      • 0秒超时-主线程执行完成后立即执行
    • 在设定时间周期内反复运行:setInterval()/requestAnimationFrame()

      • setInterval

        • const myInterval = setInsterval(functionName,time)
        • clearInterval(myInterval)
      • requestAnimationFrame动画效果

    • 特殊用法

    Promises

    • 延迟一些操作找到前面的代码已经返回结果

    • fetch then then catch finally

    • 自定义promise

      • Promise()

        • resolve()

        • reject()

        • Promise.all()

          • 当所有的await全部可用的时候执行

    async和await

    • 修饰函数,返回值为promise
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值