美文网首页
javaScript 基础知识

javaScript 基础知识

作者: 洱月 | 来源:发表于2017-08-09 11:41 被阅读0次

    JavaScript

    js能干什么?

    • 数据验证
    • ajax
    • 动态的获取改变页面内容
    • 增加页面动画效果
    • 操作DOM
    • cookie
    • 添加事件
    • ...

    语法特点:基于对象和事件驱动的松散型的解释性语言

    JavaScript组成部分

    ECMA规范

    数据类型 运算符 函数 流程控制 面向对象。

    BOM浏览器对象模型(Browser Object Model)

    DOM文档对象模型(document Object Model)

    命名规范

    1. 严格区分大小写
    2. 驼峰命名法
    3. 首字母以$ _ 字母开头,不能用数字、
    4. 命名要有意义
    5. ;代表换行

    声明变量会遇到的问题

    1. 如果没有声明,直接对变量赋值,变量是一个全局变量
    2. 如果在赋值之前调用,会返回undefined
    3. 如果没有声明,也没有赋值,会报错,代码不会继续执行
    4. 在代码的声明赋值之后再次赋值,会覆盖掉之前的值
    5. 在代码声明赋值之后再次声明同样的变量,会生成新的变量,覆盖掉之前的。

    JavaScript数据类型

    1. 初始数据类型
      1. number
      2. null
      3. undefined
      4. string
      5. Boolean
    2. 引用数据类型
      1. object

    typeof 操作符,是一个检测数据类型的一元运算符,并且返回的结果始终是一个字符串。

    运算符

    1. 算数运算符
        • — * / % var++ ++var --var var--
    2. 关系运算符
      1. < = >= <= == === !=

    3. 赋值运算符
      1. += -= %= /= *= =
    4. 逻辑运算符
      1. && || ! 返回布尔值
    5. 一元运算符
      1. typeof
      2. +正号
        • 负号
      3. delete
      4. new创建一个新对象
      5. ++ --
    6. 三元运算符
      1. var 变量名=表达式 ? 真值:假值;
    7. 特殊运算符
      1. ',' 用来一次声明多个变量
      2. () 调用函数;增加运算优先级

    流程控制

    • 流程:就是代码执行的顺次
    • 流程控制:通过规定的语句让代码按照一定的顺序去执行
    1. 顺序结构:按照从上到下,代码书写的顺序进行执行
    2. 选择结构(分支结构,条件结构):通过一定的条件让代码按照特定的方式执行
      1. if...else
      2. 单路分支,多路分支,嵌套分支
      3. switch case分支
      4. break 条件满足后跳出并终止循环,如果后面有代码,会继续往下执行;
      5. continue 跳出并且终止当前的循环,如果下个值仍满足循环条件,则继续循环。
      6. default case分支条件都不满足时执行的代码;
    3. 循环结构:在指定的条件下重复的执行某一段代码
      1. for循环
      2. while(表达式){循环体}先判断条件是否满足,才会执行循环
      3. do{}while() 会先执行一次,然后在判断是否满足;

    函数

    函数重载:根据同一个函数参数的类型或者数量不同,来实现不同的函数体。

    函数作用域

    指一段代码的作用范围

    • 根据运行的环境来划分作用域
    • 全局作用域
    • 函数作用域

    代码的运行环境

    • 宿主环境
    • 执行环境
      • 全局环境
      • 函数环境 局部环境

    回调函数

    把一个函数的指针作为另一个函数的参数,调用这个参数的时候,这个函数就是回调函数

    闭包函数

    在一个函数的内部再次声明一个函数,使其能够调用外部函数的变量和方法;在函数外部调用外部函数的时候,就形成了闭包

    递归函数

    在函数内部直接或者间接的调用自己

    类名的添加删除

    obj.classList.add('hot')添加hot类
    obj.classList.remove('hot')删除hot类
    obj.classList.toggle('hot')如果本来有hot类,会删除,如果没有会添加一个hot类

    节点属性

    box.style.cssText="width:200px;height:33px"

    1.节点属性能用来干什么?
    
    通过节点的属性,能够获取到每个节点之间的关系,并且可
    以通过这种关系,准确快速的获取到相应节点的对象。
    
     获得节点关系的属性
    对象.parentNode 获得父节点的引用
    对象.childNodes 获得子节点的集合
    对象.firstChild 获得第一个子节点的引用
    对象.lastChild 获得最后一个子节点的引用
    对象.nextSibling 获得下一个兄弟节点的引用
     对象.previousSibling 获得上一个兄弟节点的引用
    

    会识别空格


    2.通过节点属性我们能获得每个节点的详细信息(包
    括节点类型、节点名字、节点值)
     获得节点信息的属性
                  节点类型  节点名字    节点值
              nodeType(数值) nodeName  nodeValue
    
    元素节点        1       标签名         null
    属性节点        2       属性名          属性值
    文本节点        3       #text           文本
    注释节点        8       #comment      注释的文字
    文档节点        9       #document     null
    

    节点的方法

    一、创建节点
    1. 创建元素节点
    document.createElement("元素标签名")
    
    2. 创建属性节点
    A.对象.属性="属性值“   标准属性
    
    B. 对象.setAttribute(属性名,属性值)设置
      对象.getAttribute(属性名)  获取
    
    C. arrt=document.createAttribute(“属性名”);
     arrt.nodeValue=“属性值”
     obj.setAttributeNode(arrt);
    
    1. 创建文本节点

      对象.innerHTML= '';
      document.createTextNode("文本");

    二、追加到页面当中
    父对象.appendChild(追加的对象) 插入到最后
    父对象.insertBefore(要插入的对象,之前的对象) 插入到某个对象之前

    三、删除节点

     父对象.removeChild(删除的对象)
     如果确定要删除节点,最好也清空内存 对象=null;
    
     、修改(替换)节点
     父对象.replaceChild(新节点,被修改的节点);
    

    四、复制节点

      newobj=obj.cloneNode() 方法创建指定节点的副本。
      父对象.appendChild(newobj)
      该方法有一个参数(true 或 false)。如果设置为true,所
      有的子节点也会克隆,否则只会克隆本节点。 
    

    五。克隆节点

    var newbox=box.clone();
    var newbox=box.cloneNode(true);
    

    元素尺寸的属性

      获得元素实际的高度和宽度(加上边框的宽度)
      offsetWidth
        , offsetHeight(数值类型)
    
       获得浏览器窗口的高度和宽度
      document.documentElement.clientHeightu 
      document.documentElement.clientWidth
      obj.style 属性
      getComputedStyle(obj,null).属性
    
      offsetTop offsetLeft
      返回元素相对于具有定属性的父元素的坐标(left top 值)
      1.自身和父元素都没有定位属性
      自身的外间距+父元素的内边距+父元素边框+父元素外边距
      2.自身没有定位属性,父辈元素定位(爷元素)
      自身外边距+父元素内边距+父元素边框+父元素的外边距
      3.自身定位 父辈元素定位
      自身外边距+自身left
    
    
    
    
    获取具有滚动条元素的位置属性
      scrollTop
      scrollLeft
      具有滚动条的元素在滚动的时候,他的内部元素超出该元
      素顶部或是左边的距离。
    
      document.body.scrollTop               谷歌
      document.documentElement.scrollTop   火狐
    

    JavaScript事件分类

      补充事件:
      onscroll
      onresize
      重点讲解事件:
      onmousewheel 鼠标滚动;IE
      addEventListener("DOMMouseScroll",scrollfun,false) W3C
      mouseout 鼠标离开
      mouseover 鼠标悬停
    

    事件绑定

      1.一般绑定事件
      在脚本中绑定
      直接在HTML元素绑定
      2.同一个事件绑定多个事件处理程序
      IE:
      对象.attachEvent("事件(on)",move) 添加
      对象. detachEvent("事件(on)","处理程序") 删除
      FF:
      对象.addEventListener("事件","处理程序",布尔值) 添加
      对象.removeEventListener("事件","处理程序",布尔值) 删除
    
      内容
        obj.innerHTML
        设置或者获取html元素的内容(识别标签对)
    
    JavaScript事件分类
      补充事件:
      onscroll
      onresize
      重点讲解事件:
      onmousewheel 鼠标滚动;IE
      addEventListener("DOMMouseScroll",scrollfun,false) W3C
      mouseout 鼠标离开
      mouseover 鼠标悬停
    

    事件对象的属性

      1.关于鼠标事件
        相对于浏览器位置的
        clientX 当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置
        clientY 当鼠标事件发生的时候,鼠标相对于浏览器Y轴的位置
    
        相对于屏幕位置的
        screenX 当鼠标事件发生的时候,鼠标相对于屏幕X轴的位置
        screenY 当鼠标事件发生的时候,鼠标相对于屏幕Y轴的位置
    
        相对于事件源的位置
        offsetX 当鼠标事件发生的时候,鼠标相对于事件源X轴的位置
        offsetY 当鼠标事件发生的时候,鼠标相对于事件源Y轴的位置
    

    滚轮事件

     谷歌 上120 下-120
      document。addEventListener('mousewheel',function(e){
      e.wheelDelta
      },false)
     
     IE 上120 下-120
      document.attachEvent('onmousewheel',funcrtion(e){
      window.event.wheelDelta
      })
     火狐 上-3 下3
      document.addEventListener('DOMMouseScroll',function(e){
      e.detail
      })
    

    事件对象阻止浏览器默认行为

      if (ev.preventDefault )
      ev.preventDefault(); //阻止默认浏览器动作(W3C)
      else
      ev.returnValue = false;//IE中阻止函数器默认动作的方式
    
    if(e.preventDefault){
          // 阻止默认浏览器动作
          e.preventDefault();
        }else{
          e.returnValue=false
        }
    

    事件对象的属性

      关于鼠标移入移出的
      mouseout mouseover
      事件对象属性
        事件对象.fromElement 鼠标从哪来 IE
        事件对象.toElement 鼠标到哪去 IE
        事件对象.relatedTarget FF
        在mouseover事件中代表IE中的fromElement
        在mouseout事件中代表IE中的toElement
    

    键盘事件

      keydown  keyup  keypress
      键盘码 e.keyCode
        a A(65)  回车(13) 空格(32)  shift(16)  Ctrl(17) 
        alt(18)  左上右下(37 38 39 40)
    
      弹出键盘码
        document.onkeydown=function(e){
          alert(e.keyCode)
        }
    
      判断键盘码
        document.onkeydown=function(e){
          if(e.keyCode==16)
          alert(true)
        }
    
      或者
        document.onkeydown=function(e){
          if(e.shiftKey)
          alert(true)
        }
    
      altKey 判断alt键是否被按下 按下是true 反之是false 布尔值
      ctrlKey
      shiftKey
      type 用来检测事件的类型 主要是用于多个事件通用一个事件处理程序
      的时候
    

    事件流

      当页面元素触发事件的时候,该元素的容器以及整个页面都
      会按照特定顺序响应该元素的触发事件,事件传播的顺序叫
      做事件流程。
    
      事件流的分类
        1.冒泡型事件  (所有的浏览器都支持)
        由明确的事件源到最不确定的事件源依次向上触发。
        addEventListener(事件,处理函数,false)
        on+事件类型
        attachEvent(type,fn)------IE
    
        2.捕获型事件 (IE不支持 w3c标准 火狐)
        不明确的事件源到明确的事件源依次向下触发。
        addEventListener(事件,处理函数,true)
            var box=$('.box')[0];
            var son=$('.son')[0];
            var son1=$('.son1')[0];
    
            son.addEventListener('click',function(e){
              alert(1)
            },false);
            son1.addEventListener('click',function(e){
              alert(2)
            },false);
            box.addEventListener('click',function(e){
              alert(3)
            },false);
            或者
            son.onclick=function(e){
            e.stopPropagation();
            alert(1)
            }
            box.onclick=function(e){
              alert(2)
            }
    

    阻止事件流(事件对象)

        IE: e.cancelBubble=true;
        FF: e.stopPropagation();
    

    获得目标事件源的对象(就是找出这是在哪个标签上发生的事件)

        IE: e.srcElement
        FF: e.target
    

    事件委派(通过给父元素添加事件达到给子元素变换的作用)

    节点

    • box.children 所有的元素节点
    • childElementCound 所有元素节点的个数

    csstext

    let box=$('.box')[0];
    let aa=$('<div>')
    aa.style.cssText="width:200px;height:200px;background:green";
    注意书写规范;
    

    我叫洱月,我愿意陪你到洱海风花雪月,你,看到我了吗?

    码字不易,点个赞呗

    相关文章

      网友评论

          本文标题:javaScript 基础知识

          本文链接:https://www.haomeiwen.com/subject/kqbfrxtx.html