JS

作者: xiongsirui | 来源:发表于2016-07-17 21:54 被阅读32次

    1.JS的历史
    a) 1992年Nombas开发出C--,后改名为ScriptEase
    b) Netscape 接受Nombas理念,开发了JavaScript
    c)微软搭载了一个JavaScript的克隆版叫Jscript.
    d)ECMA统一为ECMAScript
    javaScript由下面三个部分组成:
    a.核心
    b.文档对象模型(DOM)
    c.浏览器对象模型(BOM)
    js是面向对象的语言:
    1.封装
    2.继承
    3.多态
    4.聚集 -> 对象中具有引用其他对象的能力.
    js使用中绝大多数情况不需要进行面向对象的设计.更多情况是使用已经设计好准备好的对象.
    基于对象的语言.
    2.JS的引入
    1>页面中直接在Script标签中书写
    script标签位置任意,但是位置越靠前加载越早。
    2>在script标签中引入
    js外部文件推荐扩展名是.js,但是其实任何后缀名都可以。
    3>使用script标签引入外部文件,那么该script标签中就不要书写js代码。
    3.JS的基本语法
    1 变量声明
    变量声明使用var
    变量区分大小写
    字符串使用双引号 或单引号包裹都可以
    行尾使用“;”作为一行的结束符号(也可以没有“;”,以折行符作为替代)
    js中的注释有两种单行,多行
    //单行注释“//”
    多行注释“/* */”
    4.封装代码块与java一样,使用{}
    5.变量声明时,前缀var 也不是必须的。
    前缀var也可以不加,如果不是var那么该变量是全局变量
    4.JS中的类型
    java ==> 基本数据类型 和 引用数据类型
    js中 类型也分为两种 ==> 原始数据类型 和对象数据类型. 与java一模一样
    java中 基本数据类型有哪些? byte short int long float double Boolean char
    js 中原始数据类型有哪些?
    number(数字,浮点型,整型)
    string(js语言的突破,没有char类型.)
    Boolean
    null(用来标示引用数据类型的占位符. 通常都是人为赋值.) var person = null;
    undefined (由null衍生出来的值,是当我们声明一个变量,没有给该变量初始化值,那么系统会自认为赋值为undefined)
    原始数据类型 判断符
    typeof ==> 用来判断一个变量是哪种原始类型
    5.JS中的语句
    //java中有哪些语句?
    //循环:for while-do do-while
    //判断:if swith
    //js中语句 与java中一模一样
    //特殊:java中增强for循环在js中没有.
    js中有for(var xx in xx) 语句 => 用的很少,用来遍历对象的属性。
    6.JS中的运算符
    一元运算符
    void ==> 放到后面,学完函数讲
    一元加法,减法
    var a = +1;
    var b = -1;
    在js中的高级应用.
    var c = + "1"//这样写是在进行类型转换
    var c = -"abc"//这样写会进行类型转换,转换失败。
    //boolean运算符
    string ==> ""==> 转换为false 其他都为true
    number ==> 除了NaN,+0 和 -0.其他都转换为true

    //NaN特性:
    //1 NaN参与任何boolean运算返回值都是false,除了!=
    alert(6>NaN);//false
    alert(6>NaN);//false
    alert(6==NaN);//false
    alert(NaN == NaN); //false
    //因为undefined是null衍生出的,所以
    alert(undefined == null); //true

    比较运算符
    alert(11>3);//true
    //当运算符两端,一端是数字,一端是其他类型时,一端会向数字类型转换;
    //字符串在进行比较时,规律是:比较首字符asc码。如果一样,比较第二位...
    alert("11">"3");//false
    alert("abc">11);//false
    false转换成0;true转换成1;undefined不能转数字
    等号和非等号

    ECMA定义的对象
    Object是所有对象的超类
    java中方法,函数
    //public void xxx(){}
    //function fun1(){ } ==> 这是定义对象。特殊之处,就是像java中的方法一样可以执行
    js中的函数对象:
    function fun1(){
    alert(‘aaa’)
    }
    alert(fun1.toString())//函数对象的toString方法,打印函数的完整定义
    方式1 ==> 函数对象的构造方法中,最后一个参数是定义函数的提。之前所有参数都是
    var fun2 = new Function("a","b","alert(a+b);");
    相当于function fun2(a,b){
    alert(a+b);
    }
    函数调用:
    fun2(1,2);//3
    fun2(1,2,3);//3
    fun1();//NaN

    function fun3(){
    alert(arguments.length);
    }
    fun2(); //0
    fun2(1,2); //2
    fun2(1,2,3); //3
    arguments ==> 代表函数运行时的实际参数列表

    //js中存在函数的重载么?如何重载?
    function fun3(){
    alert('aaa')
    }
    function fun3(){
    alert('bbb')
    }
    //如上不能重载,是覆盖
    重载
    function fun4(){
    if(arguments.length == 2){
    alert(xxx)
    }else
    if (arguments.length == 3){

    }
    }
    fun4(1,2);//3
    fun4(1,2,3);//
    return 关键字,在js中也可以作为结束方法运行的功能.
    // -- 运算符void( )的使用 ----
    alert(void(fun2(1,2)));//undefined

    <a href="javaScript:void(fun2(2,3))">点我</a>
    <a href="javaScript:void(0)">点我</a>

    ECMAScript中对对象的


    image.png

    JS --> 原始类型string可以使用对象类型的方法和属性。
    string Boolean

    Boolean 和 Number类型中的方法在开发中几乎不可能用到。
    String对象 ==> 学习重点
    //length ==> 长度
    方法:
    1.没用的方法
    alert(str1.big())
    alert(str1.sub())
    alert(str1.bold())
    2.重要的方法
    //indexof
    //lastIndexof
    //charAt
    alert(str1.charAt(0));
    //charCodeAt返回字符所在的asc码
    //substring
    alert(str1.substring(0,1));//a
    //slice 支持负数
    alert(str1.slice(0,-1));//a
    //3.与正则结合的方法(正则对象讲完回来看。)
    //split
    //replace
    //match
    //search
    利用三大包装类的构造函数进行强制转换
    运算符 ==>
    typeof 运算符判断原始数据类型的。
    instanceof 运算符用来判断属于哪个对象。
    内建对象:
    一个是Global对象
    //不需要创建实例
    global对象:
    关于解码和编码的方法:
    encodeURI
    decodeURI
    var url = "http://www.baidu.com?name=?张/三:"
    var url2 = encodeURI(url);
    alert(decodeURI(url2));
    encodeComponent 编码当蹄壳的值中包含一些url中的敏感符号时,使用该方法对敏感符号编码
    //isNaN 判断某个值是否是NaN ==> NaN = = NaN => false
    alert(isNaN)
    //parseInt 转换成整数
    //parseFloat 转换成浮点数

    var str = "123"

    //使用 +
    //使用new Number()
    //3.parseInt

    //区别:1,2两种转换属于将字符串整体转换,如果存在不属于该类,就为NaN
    3.从左到右,能转一个是一个,直到遇到不能转换的值停止。
    3.与正则结合的方法

    //parseFloat 转换成浮点数
    //与上面的parseInt一样,区别是支持转换小数

    Math对象
    不需要创建实例,直接使用即可。

    属性:
    //PI ==> 3.14159圆周率
    方法:
    random方法 ==> 返回随机数0~1之间的随机数 包括0不包括1
    alert(Math.random());

    round方法 ==> 四舍五入方法.
    //max/min 方法

    //pow ==>次方

    //Array对象 ==> 数组
    1> 创建方式1
    var arr1 = [1,2,3];
    2> 创建方式2同方式1
    var arr2 = new Array(1,2,3);
    3>创建方式3 ==>创建一个长度为3的数组,数组Array的构造函数,如果只传一个参数,并且
    var arr3 = new Array(3);

    js数组的特点:
    //1.js中的数组,类型任意
    //2.数组声明了没有赋值,那么它的元素是类型是undefined

    //3.方法
    var arr4 = [1,2,3]
    //join方法 ==> 将数组中的每个元素连接起来返回一个字符串,参数就是连接符
    alert(arr4.join("-"));//使用该方法可以模拟一个StringBuilder

    //join方法的高级应用.
    ["a","b","c"] ==> “abc"

    //push
    pop删除并返回数组的最后一个元素
    ==> 模拟栈的结构。

    队列:先进先出

    //shift/unshift ==> 模拟队列的结构
    //reverse方法 ==> 将数组中的元素顺序倒置
    alert(arr4.reverse()); //3.2.1
    //sort方法 ==> 排序的方法.
    //注意:该方法默认排序规则,按照字符串规则排序
    //如果需要按照数字排序,需要准备一个比较器
    var arr5 = [2,9,3,5,7];

    alert(arr5.sort())
    //函数对象 ==> 比较器
    function abc(a,b){
    return a-b
    }

    //Data对象
    var date = new Data();//当前时间

    alert(date.getFullYear());
    alert(date.getMonth());
    alert(date.getHours());
    //注意:
    //1.月份计数时是0~11月,所以要加1获得正常月份
    //2.星期计数十0~6.
    var date2 = new Date(1000000);
    //空参构造获得时间
    正则对象
    //1.构造方法
    //参数1,正则字符串,参数2匹配模式
    //用户名必须以字母开头,长度在6到10之间.
    //匹配模式有两种
    //"i":忽略大小写. i1
    //"g":全局匹配global
    var reg1 = new RegExp("[a-zA-Z][a-zA-Z_0-9]{5, 9} "," ");

    //2 方法
    //test 方法 ==> 测试字符串与正则是否匹配
    //split 切割字符串
    alert(str.split(/0/g))

    match方法:alert(str.match(o/g));

    js中自带类型转换.
    string => Boolean 除了空字符串(" ")其他都是true
    number => Boolean 除了 +0, -0, NaN, 其他都是true
    null => Boolean false
    undefined => Boolean false
    object => Boolean true
    等性表
    null == undefined true
    false == 0 true
    true == 1 true
    2 == true false
    NaN == NaN false
    NaN == 'NaN' false
    NaN != NaN true
    类型转换
    “+” ==> 可用于将字符串转换为数字,如果含有不能转化的字符,返回NaN.
    比较运算符
    <,>,<=,>=,==,!=,===
    3 > "11" false
    “3” > "11" true
    11 == "11" true
    11 === "11" false
    7.对象类型学习
    EcmaScrippt中 对象 看成两种:

    1. 本地对象(Native object)
      本地对象中有一部分对象特殊:不需要创建实例,可以直接使用。
      Object
      Function(特殊)
      String
      Number
      Boolean 以上3个是3个原始数据类型的包装对象。
      本地对象中有一部分对象特殊:内建对象(build in object):不需要创建实例,可以直接使用。
      Global: 直接写,无需前缀
      Math:调用时需要些“Math.”
      Array: 1.数组中类型没有限制。
      2.数组的长度随着使用而变化的。
      Date
      RegExp //正则表达式/匹配模式 、test方法
      2.主机对象(Host object)

    相关文章

      网友评论

        本文标题:JS

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