JavaScript 基础讲解

>>JavaScript 是嵌入HTML中在浏览器中的脚本语言,具备与java和C语言相似的语法。
>>特色:    
    <1>由浏览器解释逐行执行代码,不进行预编译。
    <2>基于对象,内置有大量现成对象
>>使用方式:
    <1>在事件定义时直接写JS
    <2>嵌入式:使用<script>标签
    <3>HTML页面引用.JS文件
    *注*:script标签要么用来写JS,要么用来引入JS。script标签必须写成双标签,不管有无内容 
>>注释与JAVA相同
>>单引号和双引号做用相同
>>定义变量使用var关键字
>>JavaScript数据类型分为四类:
    <1>特殊类型:null 空  undefined 未定义
    <2>基本类型(内置对象):
        number 数字 string 字符串 Boolean 布尔 Function 函数 Array 数组
    <3>外部对象:Window 浏览器对象 document 文档对象
    <4>自定义对象
>>数据的隐式转换
    字符串+数字 :数字转换为字符串
    字符串+布尔值:布尔值转换为字符串
    数字+布尔值:布尔值转换为数值 true:1   false:0
    布尔值+布尔值:数值相加
>>当使用其余值作条件时,表明空的值等价于false,表明非空的值等价于true。
    空:null/""/undefined/0/NaNjava

>>>>>>>>>>>>>>>1.内置对象<<<<<<<<<<<<<<<<<<<<
1)    String
    ---JS的string有length属性,而JAVA中是length()方法
    ---JS中多了一个方法,X.charCodeAt(index):返回指定位置字符的Unicode编码
    ---JS中少了一个方法。S.replaceAll().
    ---JS中的String和JAVA差很少,以了解为主。
2) Number
    ---toFixed(m) m为须要保留的小数位数
        将数字转换为字符串,并保留相应的小数位数
3) Array(*)
    >>>JS中的数组都是Object数组,例:var a1 = ["zhangsan",23,false];
    ---建立:
        //已知数据时这样建立
        var a1 = ["zhangsan",23,false];
        //未知数据时这样建立
        var a2 = new Array();
        //放数据
        a2.push("list");
        a2.push(26);
        a2.push(true);
    ---数组倒转:x.reverse()
    ---数组排序: x.sort([SortFunc]):sortFunc为比较方法
        JS中的数组都是Object数组,因此它默认将全部元素的转换为toString,而后进行排序。
4) Math
    >>与JAVA中的Math类似,了解。
5)Date
    ----建立:
        var now = new Date();(获取客户端时间)
        var now2 = new Date("2016/8/31 11:55:23");
    ----方法:
        toLocaleTimeString();
        toLocaleDateString();
6) 正则:RegExp对象 **重要**
    \d:表示任意一个数字
    \w:表示任意一个单词字符(只能是 数字,字母,下划线)
    \s:表示任意一个空白字符(\t \r \n \f \x0B)
    \D:表示任意一个非数字字符
    \W:表示任意一个非单词字符
    \S:表示任意一个非空白字符
    <1>建立正则对象
    ----var reg = /\d/g;
    ----var reg = new RegExp("\d",g);
    <2>检测模式
     1.  i:ignore 忽略大小写
     2.  g:globle 全局模式node

    <3>正则对象的检测方法
    ---reg.test(str) **重要**
        检查Str中,是否包含与reg匹配的字串,返回Boolean值。
    ---reg.exec(str)
        >>在非全局模式下,从str中找出和reg匹配的第一个字串
          >>在全局模式下,第N次调用此方法,就是,从str中找出第N个和reg    匹配的字串
    <4>字符串支持正则的方法
    ---str.replace(reg,"目标") **重要**
        >>>>将str中和reg匹配的子串替换成目标,并返回新的字符串
        ◆修改字符串的API都是产生新字符串,原来的字符串是不变的
    ---str.match()
        从str中找出和正则匹配的全部字串
    ---str.sereach()
        从str中找出和reg首次匹配的字串的索引
7)Function对象
    --关键字function 用于定义函数
    ---返回值 默认为undefined 也可以使用return返回具体值
    ---JS中函数没有重载
        >>>>arguments数组对象:函数的参数数组   **重要**
            没有收到实参的参数值是undefined
    <1>匿名函数
        建立匿名函数:function(arg1,...,argN){函数体};
        用于特殊环境,如数组排序。
    <2>全局函数:
    --parseInt/parseFloat
        字符串转换为数字
    --isNaN
        判断字符串是否为非数字,非数字:true 数字:false
    --eval   **重要**
        用于计算表达式字符串;如eval("2+4");//6
    --typeof
        查询当前值的类型windows

>>>>>>>>>>>>>>>2.外部对象 **重要**<<<<<<<<<<<<<<<<
    >>外部对象就是浏览器提供的API
      >>BOM和DOM
      <a>BOM:Browser Object Model 浏览器对象模型
      --用来访问和操纵浏览器窗口,使JS有能力与浏览器"对话"
      --可移动窗口,更改状态栏文本、执行其余不予页面内容发生直接联系的操做
      <b>DOM:Document Object Model 文档对象模型
      --用来操做文档(网页)
      --定义了访问和操做HTML文档的表中方法。
      **注:** BOM包含了DOM
>>>>> windows 对象
    --调用window的属性和方法能够省略"window."
  <1>经常使用的属性对象
  --document 文档
  --history 
  --location 地址栏
  --screen 屏幕
  --navigator 内核
  <2>经常使用的方法:
  -->对话框:
    --alert():弹出框
    --confirm():确认框,返回Boolean值
    --prompt():输入框,返回输入的字符
  -->定时器:
    一次性定时器:
    --setTimeout(exp,time):exp:须要执行的代码或函数 time:多少毫秒  返回一个ID
    --clearTimeout(tID):中止执行定时器
    周期性定时器:
    --setInterval(exp,time): exp:须要执行的代码或函数 time:多少毫秒  返回一个ID
    --clearInterval(tID):中止执行定时器
  <3>子类对象
  <<1>>location 对象
    --属性:localtion.href 更改当前网页
    --方法:location.reload() 刷新当前网页
  <<2>>history 对象
    --方法:
      --back() 后退
      --forward() 前进
      --go(num) 跳转,前进或后退取决于num的值是正或负
  <<3>>screen
    --属性:
    --screen.width 屏幕的宽
    --screen.height 屏幕的高
    --screen.availWidth 有效宽
    --screen.availHeight 有效高
  <<4>>navigator对象
    --navigator.userAgent
  <<5>>document文档节点(根节点) ----> DOM 对象  **重要**
    --DOM 操做:查找节点,读取节点信息,修改节点信息,建立新节点,删除节点
    1.读写节点的类型和名称:
      --属性:nodeType 、nodeName
    2.读写节点的内容
      --两个属性:
      --innerHTML:支持子标签 
      --innerText:不支持子标签 
    3.读写表单控件的值
      --包括:input、select、textarea
      --读:input.value
      --写:input.value=""
    4.读写节点的属性
      4.1使用方法:这些方法都是标准的API,任何版本的浏览器都支持
        --getAttribute() 获取节点的属性
        --setAttribute() 设置节点的属性
        --removeAttribute() 删除属性
    4.2使用属性
      4.2.1标准属性:这些属性是标准的API,任何版本的浏览器都支持
        标准属性包括:id/className/style 其余为非标准
      4.2.2非标准属性:这些不是标准API,低版本的浏览器不支持
    5.根据标签名查询节点
      5.1在整个文档内查询
        --var li = document.getElementsByTagName("li");
      5.2在某个节点下查询
        --var ul = document.getElementById("city");
        --var uli = ul.getElementsByTagName("li");  
    6.根据层次查询节点
      6.1查询某节点的父亲
        --xx.parentNode
      6.2查询某节点的全部孩子(带空格/回车,因此通常不用)
        --xx.childNodes
      6.3查询某节点的元素孩子
        --xx.getElementsByTagName("某个节点名");
      6.4查询某节点的兄弟
        --节点.父亲.孩子们[i]:
        gz.parentNode.getElementsByTagName("某个节点名")[i];
    7.根据name属性查询节点
      --一般用来获取一组radio或checkbox
      --document.getElementsByName("name");
    8.建立添加新节点
      --建立:document.createElement(ElementName)
      --添加:
        1>>appendChild(newNode) 添加在最后
        2>>insertBefore(newNode,已有节点) 添加在已有节点前
>>>>>>>>>>>>>>>3.自定义对象<<<<<<<<<<<<<<<<
1)直接量(JSON)
  ---var obj = {"name":"zs","age":35,"job":function(){}};
  ---{}表明一个对象,内置键值对
  ---一般key是字符串,value是任意类型数据(包括函数)
  ---特色:采用这种方式建立对象简单
2)构造器(用来new的函数就是构造器)
  2.1) JS内置的构造器
      ---特定:Date,String,Array,RegExp
      ---通用:Object
      ---优势:简单,缺点:不够直观
  2.2) 自定义构造器
      ---写一个函数来充当构造器
      ---函数名首字母大写,加参数接收传入的数据
      ----优势:直观 缺点:麻烦数组

  ◆注:使用建议:
      ◆若封装出来的对象给被人使用,建议用2.2
      ◆若封装的对象中没有方法,建议用1
      ◆若封装的对象中有方法,建议用2.1浏览器

>>>>>>>>>>>>>>> 4.事件 Event <<<<<<<<<<<<<<<<
  1.事件的概述
    --事件就是操做、动做
    ---事件就是JS被调用的时机
    分为:鼠标事件,键盘事件,状态事件
    >>>>>状态事件:某条件达成时自动触发的事件
  2.事件的定义
    1)直接定义
      --直接在标签上经过属性定义事件
      --标签和JS耦合度高
    2)事件后绑定
      --在页面记载以后
      --获取到要绑定事件的那个元素节点 (也是标准的)
      --input.onclick = function(){};
    3)取消事件
      -在事件函数内取消事件:return false
  3.事件对象
    1)什么是事件对象
      --事件发生时浏览器对此事件建立的一个对象
      --该对象中封装了本次事件的详细信息,如鼠标的位置
    2)如何得到事件对象
    >>直接得到
      --在调用函数时直接传入event
      onclick = "f1(event);"
      在开发f1()时须要加参数来接收这个event事件
    >>后绑定事件
      --浏览器在调用函数时会自动传入enent
      --在函数上增长参数接收event便可
  4.事件冒泡机制
   >>冒泡机制
       --多层元素都定义相同的事件
       --点击内层的则外层元素事件也会触发
       --事件触发顺序是由内向外执行,称为冒泡机制app

   ----经过事件对象能够取消冒泡机制
   --根据浏览器的不一样有两种方法:
      >>event.stopPropagation();
      >>event.cancelBubble = true;
  5.事件源
    获取事件源:
      根据浏览器的不一样有两种方法:
      >>event.srcElement
      >>event.target函数

    ◆注:冒泡机制的做用:
        ◆用来简化事件的定义
        ◆能够在父元素上定义一次事件,经过获取事件源来获取事件编码

相关文章
相关标签/搜索