zoukankan      html  css  js  c++  java
  • JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言

    絮叨絮叨

             这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学,经过初步的学习,会对这一门语言有了一定深入的了解,也会感受到这一门语言的强大之处。希望各位同学通过一定的学习,会得到等大的收获。

            因为是最后一篇所以内容可能有点多,希望各位同学能够慢慢看,细细看,让我们一起学习,一起进步,一起感受JS的魅力

    函数

    函数的声明及调用

    1、函数的声明格式
     function 函数名(参数1,参数2,……){
      //函数体代码
       return 返回值;
     }

     函数的调用
    ①直接调用:函数名(参数1的值,参数2的值,……);


    ②事件调用:在Html标签中,使用事件名="函数名()"

    <button onclick="saySth('hahaha','yellow')">点击按钮,打印内容</button>

    2、函数的注意事项:
    ①函数名必须要符合小驼峰法则!(首字母小写,之后的每个单词首字母大写)


    ②函数名后面的()中可以有参数,也可以没有参数,分别称为有参函数和无参函数;


    ③声明函数时的参数列表,称为形参列表,形式参数。(变量的名字)
      调用函数时的参数列表,称为实参列表,实际参数。(变量的赋值)

    function saySth(str,color){
        document.write("<div style='color:"+color+";'>"+str+"</div>");
    
    }            
    saySth("我真帅!","red");

    ④函数的形参列表个数与实参列表个数没有实际关联关系。
      函数参数的个数,取决于实参列表。
      如果实参列表的个数<形参列表,则未赋值的形参,将为undefined。


    ⑤函数可以有返回值,使用return返回结果(因为return有结束函数的作用,所以代码不能写到return后面):
      调用函数时,可以使用一个变量接受函数的返回结果。如果函数没有返回值,则接受的结果为undefined;

    function func(){
      return "haha";
    }

    var num = func();

    ⑥函数中变量的作用域(JS中只有函数有自己的作用域):
      在函数中,使用var声明的变量,为局部变量,只能在函数内部访问;
      不用var声明的变量,为全局变量,在函数外面也能访问;
      函数的形参列表,默认为函数的局部变量,只能在函数内部使用。

    ⑦函数的声明与函数的调用没有先后之分。即,可以在声明函数前,调用函数。

    func();         //声明func之前调用也是可以的。
    function func(){}
    匿名函数的声明使用

    1、声明一个匿名函数,直接赋值给某一个事件

    window.onload = function(){}


    2、使用匿名函数表达式。将匿名函数赋值给一个变量

    var func = function(){}           //声明     
    func();                           //调用

     注意:使用匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后!!!(与普通函数的区别)

    3、自执行函数
    !function(){}(); //可以使用多种运算符开头,但一般用感叹号!
      !function(形参列表){}(实参列表);


    (function(){}()); //使用()将函数机函数后的括号包裹


    (function(){})(); //使用()值包裹函数部分;

    三种写法的特点
    ① 使用!开头,结构清晰,不容易混乱,个人推荐使用;


    ② 能够表明匿名函数与调用的()为一个整体,官方推荐使用;


    ③ 无法表明函数与之后的()的整体性,不推荐使用。

    函数的内部属性

     

    Arguments对象
    ①作用:用于储存调用函数时的所有实参,当我们调用函数并用实参赋值时,实际上参数列表已经保存到Arguments数组中,
      可以在函数中,使用Arguments[n]的形式调用。n从0开始


    ②arguments数组的个数,取决于实参;列表,与形参无关。
      但是,一旦第N个位置的形参、实参、argument都存在时,形参将与arguments绑定,同步变化。
      (即,在函数中修改形参的值,arguments也会改变。反之亦成立)


    ③arguments.callee 是arguments的重要属性。表示arguments所在函数的引用地址;
      在函数里面,可以引用arguments.callee()调用函数本身。
      在函数内部,调用函数自身的写法,叫做递归。


    递归分为两部分: 递和归。以递归调用语句为界限,可以将函数分为上下两部分。
    递:当函数执行上半部分遇到自身的调用语句时,继续进入内层函数,再执行上半部分。直到执行完最内层函数。
    归:当最内层函数执行完以后,再从最内层函数开始,逐渐执行函数的下半部分。

    当最外层函数执行时,遇到自身的调用语句会进入内层函数执行,而外层函数的后半那部分暂不执行,直到最内层函数执行完以后,在逐步向外执行。

    如图:

    var num = 1;
    function func(){
        console.log(num);
        num++;

        if(num<=4){
          arguments.callee(); //递归调用语句 ↑上部分 递 ↓下部分 归
        }

    
    

        num--;
        console.log(num);
    }
    func();

    JS代码的执行顺序问题

    JS代码在运行时,会分为两大部分。检查装载 执行阶段。
    检查装载阶段:会先检测代码的语法错误,进行变量、函数的声明。
    执行阶段:变量的赋值、函数的调用等,都属于执行阶段。

    以下面的三段代码为例:

    1、打印num,显示为Undefined,而不会是10。

    console.log(num);     //Undefined
    var num = 10;

    2、函数可以正常执行。

    func1();   //函数可以正常执行
    function func1(){}

    3、函数不能执行,打印func2时,显示Undefined

    func2();   //函数不能执行,打印func2时,显示Undefined
    var func2 = function(){}

     原因:上述代码的执行顺序为:

    ---------------检查装载阶段----------------
           var num;
          function func1(){}
           var func2;

     ---------------代码执行阶段----------------
        console.log(num);
           num = 10;
            func1();
            func2();
        func2 = function(){}

    BOM

    屏幕对象

    console.log(window.screen.width); //屏幕宽度
    console.log(window.screen.height); //屏幕高度
    console.log(window.screen.availwidth); //可用宽度
    console.log(window.screen.availheight); //可用高度=屏幕高度-底部工具栏




    location 对象:渠道浏览器的URL地址信息
    完整的URL路径:
      协议名://主机名(IP地址):端口号/文件所在路径?传递参数(name1=value1&name2=value2)#锚点
    例如:http//127.0.01:8080/wenjianjia/index.html?name=jredu#top

     console.log(location);

    console.log(location.href); //返回当前完整路径
    console.log(location.protocol); //返回协议名
    console.log(location.host); //返回主机名+端口号
    console.log(location.hostname); //返回主机名
    console.log(location.port); //返回端口号
    console.log(location.pathname); //返回文件路径
    console.log(location.search); //返回?开头的参数列表
    console.log(location.hash); //返回#开头的锚点



    使用JS跳转页面
    window.location = "www.baidu.com";

    其他使用location提供的方法跳转页面的方式

    location.assign("www.baidu.com");
    location.reliace("www.baidu.com");

    function assign(){
      //加载新的文档,加载以后可以回退
      location.assign("http://www.baidu.com");
    }



    function replace(){
      //使用新文档替换当前文档,替换以后不能回退
      location.replace("http://www.baidu.com");
    }



    function reload(){
      //重新加载当前文档。刷新页面
      //reload():在本地刷新当前页面,相当于F5
      //reload():强制刷新,从服务器端重新加载页面,相当于ctrl+F5
      location.reload();
    }


    history 浏览历史

    console.log(hostory);
    console.log(hostory.length); //浏览历史列表的个数

    function back(){
      history.back(); //后退按钮
    }



    function forward(){
      history.forward(); //前进按钮
    }



    function go(){
      /*跳转到浏览历史的任意一个页面:0表示当前页面,-1表示后一页(back),1表示前一页(forward)*/
      history.go(1);
    }


    navigator  (了解即可)
    包含浏览器的各种系统信息。

    console.log(navigator);

    /*检测浏览器安装的各种插件*/
    console.log(navigator.plugins);


    confirm 确认对话框

    var is = confirm("我帅吗");
    
    if(is){
        alert("你最帅!");
    }else{
        alert("帅上天!");
    }

    效果如图:

    window对象的常用方法

    >>>在window对象中的所有方法和属性,均可以省略window关键字
      window.alert();-->alert();

    1、alert():弹出一个警告提示框;


    2、prompt():弹窗接受用户的输入;


    3、confirm():弹出一个带有“确定”和“取消”按钮的对话框,点击按钮返回true/flase;


    4、close():关闭当前浏览器窗口,在个别浏览器中,只能关闭在当前脚本新打开的页面(使用超链接、window.open()等方式打开的页面)


    5、open():打开一个新窗口。
      参数一:新窗口的地址
      参数二:新窗口的名字,并没有什么卵用
      参数三:新窗口的各种属性设置,"属性1=值1,属性2=值2,属性3=值3"


    6、setTimeout:设置延时执行,只会执行一次;
      setInterval:设置定时器,每隔n毫秒执行一次
    接受两个参数:需要执行的function、毫秒数;

    7、clearTimeout:清除延时器
    setInterval:设置定时器,每隔n毫秒执行一次
    使用方法:设置延时器或定时器时,可以使用变量接受定时器id;
    var id = setInterval;
    调用clearInterval时,将id传入,即可清除对应的定时器;
    clearInterval(id);

    function closewindow(){
        close();
    }
    function openwindow(){
        window.open("http://www.baidu.com","baidu","width=600px,height=600px,left=200px,top=200px");
    }
                
    var timeoutId = 0;
    function setTimeout1(){
        setTimeout(function(){
          console.log("延时器成功执行!");
      },3000);
      timeoutId = setTimeout(openwindow,3000);
    }
    function clearTimeout1(){
        clearTimeout();
    }

     效果如图,当点击 设置延时器按钮  时,会隔3秒弹出一个新窗口:

    DOM

    DOM树节点

    DOM节点分为三大类:元素节点、属性节点、文本节点;

    文本节点、属性节点属于元素节点的子节点。操作时,均需要先取到元素节点,在操作子节点;

    可以使用getElement系列方法,取到元素节点。

    【查看元素节点】
    1、 getElementById:通过id取到唯一节点。如果id重名,只能取得第一个。
      getElementsByName():通过name属性
      getElementsByTagName():通过标签名
      getElementsByClassName():通过class名

    >>>获取元素节点时,一定要注意:获取节点的语句,必须在DOM渲染完成之后执行。可以有两种方式实现:
      ①将JS代码写在body之后;
      ②将代码写到window.onload函数之中;
    >>>后面三个getElements,取到的是数组格式,不能直接添加各种属性,而应该去除数组的每一个单独操作。
    例如:getElementsByTagName("name1")[0].onclick = function

    【查看/设置属性节点】
    1、查看属性节点:getAttribute("属性名");
    2、设置属性节点:setAttribute("属性名","新属性值");

    >>>查看和设置属性节点,必须先去到元素节点,才能使用。
    >>>setAttribute(); 函数在IE浏览器中可能会存在兼容性问题。比如在IE中不支持使用这个函数设置style/onclick等样式属性和事件属性。
    >>>我们推荐使用点符号法替代上述函数
      eg:dom1.style.color="" dom1.onclick="" dom1.src=""
    *
    【总结-JS修改DOM节点的样式】
    1、使用setAttribute()设置class和style属性,但是存在兼容性问题,不提倡
      eg:div.setAttribute("class","cls1");
    2、使用.className直接设置class类,注意是className而不是.class
      eg:div.className = "cls1";
    3、使用.style设置单个属性,注意属性名要使用驼峰命名法:
      eg:div.style.backgroundColor = "red";
    4、使用.style或.style.cssText 设置多个样式属性
      eg:div.style = "background-color: red; color: yellow;"
      eg:div.style.cssText = "background-color: red; color: yellow;"    推荐使用√

    【查看/设置文本节点】
    innerText:取到或设置节点里面的文字内容;
    innerHTML:取到或设置节点里面的HTML代码;
    tagName:取到当前节点的标签名。标签名全部大写显示。

    【根据层次获取节点】
    1、 .childNodes:获取元素的所有子节点。包括回车等文本节点。
      .children:获取当前元素的所有元素节点(只获取标签)。


    2、 .firstChild:获取元素的第一个子节点。包括回车等文本节点。
      .firstElementChild:获取元素的第一个子节点。不包括回车等文本节点
         .lastChild:获取元素的最后一个子节点。包括回车等文本节点。
      .lastElementChild:获取元素的最后一个子节点。不包括回车等文本节点。


    3、 .parentNode:获取当前节点的父节点。


    4、 .previousSibling:获取当前节点的前一个兄弟节点,包括回车等文本节点。
      .previousElementSibling:获取当前节点的前一个兄弟节点,不包括回车等文本节点。


    5、 .nextSibling:获取当前节点的后一个兄弟节点,包括回车等文本节点。
      .nextElementSibling:获取当前节点的后一个兄弟节点,不包括回车等文本节点


    6、 .getAttribute:获取当前节点的属性节点

    【创建并新增节点】
    1、document.creatElement("标签名"):创建节点。需要配合setAttribute设置各种新的属性;
    2、父节点.appendChild(新节点):末尾追加方式插入节点
    3、父节点.insertBefore(新节点,目标节点):在目标节点前插入新节点
    4、被克隆节点.cloneNode(true/false):克隆节点
     >>>传入true:表示克隆当前节点,以及当前节点的所有子节点
    >>>传入false或不传:表示只克隆当前标签节点,而不克隆子节点

    【删除或替换节点】
    1、父节点.removeChild(被删除节点):删除父节点中的子节点;
    2、父节点.replaceChild(新节点,老节点):使用新节点,替换掉老节点。

    事件

    JS中的事件分类

    1、鼠标事件
    click、bdlclick、onmouseover、onmouseout


    2、HTML事件
    onload、onscroll、onsubmit、onchange、onfouce


    3、键盘事件
    keydown:键盘按下时触发
    keypress:键盘按下并松开的瞬间触发
    keyup:键盘抬起时触发

    [注意事项]
    ① 执行顺序:keydown->keypress->keyup
    ② 当长按时,会循环执行keydown->keypress
    ③ 有keydown并不一定有keyup,当事件触发过程中,鼠标将光标移走,将导致没有keyup
    ④ keypress只能捕获键盘上的数字、字母、符号键,不能捕捉各种功能键,而keydown和keyup可以。
    ⑤ keypress支持区分大小写,keydown和keyup并不支持。

    [确定触发的按键]
    ① 再触发的函数中,传入一个参数e,表示键盘事件;
    ② 使用e.keyCode,取到按键的Asscii码值,进而确定触发按键
    ③ 所有浏览器的兼容写法(一般并不需要)
    var evn = e || event;
    var code = evn.keyCode || evn.witch || evn.charCode;

    JS中的DOM0事件模型

    1、内敛模型(行内绑定):直接将函数名作为HTML标签的某个事件属性的属性值
      eg:<button onclick="func()">DOM0内联模型</button>
      优点:使用方便。
      缺点:违反了w3c关于HTML与javaScript分离的基本原则;
    2、脚本模型(动态绑定):在JS脚本中,取到某个节点,并添加事件属性
      eg:window.onload = function(){}
      优点:实现了HTML与JavaScript的分离。
      缺点:同一个节点只能绑定一个同类事件。如果绑定多次,最后一个生效。
      

    JS中的DOM2事件模型


    1、添加事件绑定方式
      ①IE8之前:btn2.attachEvent("onclick",函数);
      ②其他浏览器:btn2.addEventListener("click",函数,true/false);
    括号里面的参数:
      参数一:绑定的事件名称
      参数二:方法函数
      参数三:false(默认)表示事件冒泡 true 表示事件捕获
      
      ③兼容写法:

    if(btn2.attachEvent){
        btn2.attachEvent();
    }else{
        btn2.addEventlistener();
    }


    2、优点

       ①可以给同一节点添加多个同类型事件;
      ②提供了可以取消事件绑定的函数。


    3、取消DOM2事件绑定
    注意:如果要取消DOM2的事件绑定,那么在绑定事件时,处理函数必须要使用有名函数,而不能使用匿名函数。
    btn2.removeEventListener("click",func2);
    btn2.detachEvent("click",func2);

    事件冒泡与事件捕获

    【JS中的事件流】
    1、事件冒泡:当某DOM元素触发一种事件时,会从当前节点开始,主机往上触发其祖先节点的同类型事件,直到DOM根节点
      >>>什么情况下会产生事件冒泡?
      ①DOM0模型绑定事件,全部都是冒泡;
      ②IE8之前,使用的attachEvent()绑定的事件,全部都是冒泡
       ③其他浏览器,使用addEventlistner()添加事件,当第三个参数省略或者为false时,为事件冒泡;


    2、事件捕获:当某DOM元素触发一种事件时,会从文档根节点开始,主机向下触发其祖先节点的同类型事件,直到该节点自身;
       >>>什么情况下会产生事件捕获?
      ①使用addEventlistner()添加事件,当第三个参数为true时,为事件捕获;
      


    3、阻止事件冒泡
    在IE浏览器中,使用:e.cancelBubble = true;
    在其他浏览器中,使用:e.stopPropagation();

    兼容所有浏览器的写法:

    function myParagraphEventHandler(e) {
        e = e || window.event;
        if (e.stopPropagation) {
            e.stopPropagation(); //IE以外 
        } else {
            e.cancelBubble = true; //IE 
        }
    }


    4、取消事件默认行为
    在IE浏览器中,使用:e.returnValue = false;
    在其他浏览器中,使用:e.preventDefault();

    兼容所有浏览器的写法:

    function eventHandler(e) {
         e = e || window.event;
         // 防止默认行为 
         if (e.preventDefault) {
             e.preventDefault(); //IE以外 
        } else {
             e.returnValue = false; //IE     
        }
    }

    JS中的内置对象

    数组

    1、数组的基本概念?
    数组是在内存空间中连续存储的一组有序数据的集合。
    元素在数组中的顺序,称为下标。可以使用下标访问数组的每个元素。

    2、如何声明一个数组?
      ①使用字面量声明: var arr = [];

      在JS中,同一数组可以存储各种数据类型。
      例如: var arr = [1,"wuhao",true,{},null,func]

      ②使用new关键字声明:var arr = new Array(参数);
      >>>参数可以是:
      a.参数省略,表示创建一个空数组;
      b.参数为一个整数,表示声明一个length为指定长度的数组。但是这个length可以随时可变可追加。
      c.参数为逗号分隔的多个数值,表示数组的多个值。
      new array(1,2,3) == [1,2,3]

    var arr = [1,"wuhao",true,{},null,func];
    console.log(arr);




    3、数组中元素的读写/增删?
      ①读写:通过下标访问元素。下标从0开始 arr[1] = "haha";
      ②增删:
        a.使用delete关键字,删除数组的某一个值。删除后,数组的长度不变,对应的位置变为Undefined。
          eg:delete arr[1];
        b.arr.pop():删除数组的最后一个值。相当于arr.length -= 1;
        c.arr.shift():删除数组的第一个值。
        d.arr.unshift(值):在数组的第0个位置新增一个值;
        e.arr.push(值):在数组的最后一个位置新增一个值;
        f.直接访问数组没达到的下标,可以动态追加。
          eg:arr[8]="嘿嘿"; arr[100]=1;      中间如果有空余下标,将存入Undefined

    4、数组中的其他方法

      ①join():将数组用指定分隔符链接为字符串。当参数为空时,默认用逗号分隔。

    var arr = [1,2,3,4,5,6,7,8];
    var str = arr.join("-");
    console.log(str)

    效果:


      ②concat():[原数组不会被改变] 将数组,与两个或多个数组的值链接为一个新数组。
         concat连接时,如果有二维数组,则至多能拆一层[]
        eg: [1,2].concat([3,4],[5,6]); -->[1,2,3,4,5,6]
           [1,2].concat([3,4,[5,6]]); -->[1,2,3,4,[5,6]]

    var arr = [1,2,3,4,5,6,7,8];
    var arr1 = ["haha","heihei","hehe"];
    var arr2 = arr.concat(arr1);
    var arr3 = arr.concat([1,2,[3,4]]);
                
    console.log(arr3);

    效果:


      ③push():在数组最后增加一个,unshift():数组开头增加一个。 -->返回新数组的长度;
       pop():在数组最后删除一个,shift():数组开头删除一个。 -->返回被删除的值;
        [上述方法,均会改变原数组]

    var arr = [1,2,3,4,5,6];
    arr.pop(6);
    arr.push(7);
                
    console.log(arr);

    效果:



      ④reverse():[原数组被改变]将数组翻转,倒叙输出。
         

    var arr = [1,2,3,4,5,6,7,8];
    arr.reverse();
    console.log(arr);

     


      ⑤slice(begin,end):[原数组不会被改变]截取数组中的某一部分,并返回截取的新数组。

      >>>传入一个参数,表示开始区间,默认将截到数组最后;
      >>>传入两个参数,表示开始和结束的下标,左闭右开区间(包含begin,不包含end);
      >>>两个参数可以为负数,表示从右边开始数,最后一个值为-1;

    var arr = [1,2,3,4,5,6,7,8];
    var arr1 = arr.slice(3,7);
    console.log(arr1);


      ⑥sort():[原数组被改变]将数组进行升序排列;
      >>>默认情况下,会按照每个元素首字母的ASCII值进行排序;
        eg:[1,5,13,12,7,6,4,8].sort() -->[1,12,13,4,5,6,7,8];
      >>>可以传入一个比较函数,手动指定排序的函数算法;
      函数将默认接收两个值a,b,如果函数返回值>0,则证明a>b,如果函数返回值<0,则证明a<b
      arr.sort(function(a,b){
        return a-b; //升序排列;
        return b-a; //降序排列;
      });


      ⑦indexOf(value,index):返回数组中第一个value值所在的下标,如果没有找到则返回-1;
         lastIndexOf(value,index):返回数组中最后一个value值所在的下标,如果没有找到则返回-1;
        >>>如果没有指定index,则表示全数组查找value;
        >>>如果指定了index,则表示从index开始,向后查找value;

    例:返回的是7

    var arr = [1,5,6,3,4,2,7,6,4,8];
    var index = arr.indexOf(6,4);
    console.log(index);



      ⑧forEach():专门用于循环遍历数组。接收一个回调函数,回调函数接收两个参数,第一个参数为数组的每一项的值,第二个参数为下标
      (IE8之前,不支持此函数!!!!!)

    var arr = [1,5,6,3,4,2,7,6,4,8];
    arr.forEach(function(item,index){
        console.log(item);    
    })

     


      ⑨map():数组映射,使用方式与forEach()相同。不同的是,map可以有return返回值,表示将原数组的每个值进行操作后,返回给一个新数组。
      (IE8之前,不支持此函数!!!!!)

    var arr1 = arr.map(function(item,index){
        console.log(item);
        return item+2;
    });
    console.log(arr1);



    5、二维数组与稀疏数组(了解)
      ①二维数组:数组中的值,依然是一个数组形式。
        eg:arr=[[1,2,3],[4,5,6]]; //相当于两行三列
        读取二维数组:arr[行号][列号];

    var arr2 = [[1,2],[3,4,5],[6,7]];
    for(var i=0;i<arr2.length;i++){
        for(var j=0;j<arr2[i].length;j++){
            console.log(arr2[i][j]);
        }
    }

      ②稀疏数组:数组中的索引是不连续的。(length要比数组中实际的元素个数大)

    6、基本数据类型和引用数据类型:
      ①基本数据类型:赋值时,是将原变量中的值,赋值给另一个变量,复制完成后,两个变量相互独立,修改其中一个的值,另一个不会变化。
      ②引用数据类型:赋值时,是将原变量在内存中的地址,赋值给另一个变量。赋值完成后,两个变量中存储的是同一个内存地址,访问的是同一份数据,
        其中一个改变另一个也会发生变化。
      ③ 数值型、字符串、布尔型等变量属于基本数据类型;
        数组,对象属于引用数据类型;

    内置对象

    1、Boolean 类
      有两种声明方式:
      可以使用字面量方式声明一个单纯的变量;用typeOf检测为Boolean类型
      也可以使用new Boolean()声明一个Boolean类型的对象。用typeOf检测为Object类型

    2、Number类
    Number.MAX_VALUE 返回Number类最大值
     Number.MIN_VALUE 返回Number类最小值

     .toString() 将数值类型转换为字符串类型
     .toLocaleString() 将数值按照本地格式顺序转换为字符串,一般从右开始,三个一组加逗号分隔;
    .toFixed(n) 将数字保留n位小数,并转为字符串格式;
    .toPrecision(n) 将数字格式化为指定长度。n表示不含小数点的位数长度,如果n小于原数字长度,则用科学计数法表示。如果n大于原数字长度,则小数点后补0
    .valueOf() 返回Number对象的基本数字值;

    3、String 类

     ①、属性:str.length 返回字符串的长度,也就是 字符数
      字符串支持类似数组的下标访问方式:str[0];
     ②、 方法:
      .toLowerCase():将字符串所有字符转成小写
      .toUpperCase():将字符串所有字符转成大写
      .charAt(n):截取数组的第n个字符,相当于str[n]
       .indexOf("str",index):从index位置开始,查找子串在字符串中出现的位置,如果没有找到返回-1;其他同数组的indexOf方法;
      .lastindexOf():同数组
      .substring(begin,end):从字符串中截取子串
        >>>只传入一个参数,表示从begin开始,到最后
        >>>传入两个参数,表示从begin到end的区间,左闭右开
       .split("分隔符"):将字符串以指定分隔符分隔,存入数组中。传入空""表示将字符串的每个字符分开放入数组
      .replace("old","new"):将字符串中的第一个old替换为new。
         >>>第一个参数,可以是普通字符串,也可以是正则表达式;var str1 = str.replace("i","*");
        >>>如果是普通字符串,则只替换第一个old。如果是正则表达式,则可以根据正则的写法要求,进行替换。var str1 = str.replace(/s/g,"*");

    4、date 日期类
    ①、new Date():返回当前最新时间
      new Date("2017,8,31,12:34:56");返回指定时间
    ②、常用方法:
      .getFullYear():获取4位年份
      .getMonth():获取月份 0-11
      .getDate():获取一个月中的第几天 1-31
      .getDay():获取一周中的第几天 0-6,0表示周天
      .getHours():获取小时
      .getMinutes():获取分钟
      .getSeconds():获取秒function getTime(){

      
    function getTime(){
      var dates = new Date();   var year = dates.getFullYear(); var month = dates.getMonth(); var date1 = dates.getDate(); var day = dates.getDay();
    var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六",]

     
    var hours = dates.getHours()<10?"0"+dates.getHours():dates.getHours();
     var minutes = dates.getMinutes()<10?"0"+dates.getMinutes():dates.getMinutes();
      var seconds = dates.getSeconds()<10?"0"+dates.getSeconds():dates.getSeconds();
    
    

       var div1 = document.getElementById("div1");
      
      div1.innerText = year+"年"+(month+1)+"月"+date1+"日"+weeks[day]+hours+":"+minutes+":"+seconds;

      setTimeout(arguments.callee,1000);
    }

     

    自定义对象

    1、基本概念:
      ①对象:拥有一系列无序属性和方法的集合。
      ②键值对:对象中的数据是以键值对的形式存在。对象的每个属性和方法,都对应着一个键名,以键取值。
      ③属性:描述对象特征的一系列变量,称为属性。【对象中的变量】
       ④方法:描述对象行为的一系列函数,称为方法。【对象中的函数】


    2、对象的声明
      ①使用字面量声明:

      var obj = {
        key1 : value1,
        key2 : value2,
        func1 : function(){}
      }


      >>>对象中的数据是以键值对形式存储,键与值之间用:分隔。多个键值对之间用,分隔。
      >>>对象中的键可以是除了数组/对象以外的任何数据类型。但是一般我们只用普通变量名作为键。
      >>>对象中的值可以是任何数据类型,包括数组和对象。
      
      ②使用new关键字声明:

      var obj = new object(){
        obj.key1 = value1;
        obj.func1 = function(){}
      }


    3、对象中属性和方法的读写:
      ①.运算符:对象名.属性 对象名.方法();
      对象外部:this.属性 this.方法
      内部对象:对象名.属性 对象名.方法();
      
      ②通过["key"]调用:对象名.["属性名"] 对象名.["方法名"]();
      >>>如果键中包含特殊字符,则只能使用第②种方式;
      >>>对象中,直接写变量名,默认为调用全局变量。如果需要调用对象滋生的属性或者方法,需要使用对象名.属性名, 或者this.属性。
      person.age this.age 都可以,但推荐使用this关键字


       ③删除对象的属性和方法:delete 对象名.属性名/方法名
      delete person.age;

    var person = {
        name : "张三",
        age : 14,
        say : function (){
          alert("我叫"+this.name+",今年"+person.age+"岁了!");
      }
    }
                
    
    console.log(person.name);
    console.log(person.age);
    person.say();

     效果:

     

  • 相关阅读:
    【洛谷P3649】回文串
    【CH2401】送礼物
    Python 函数
    Python 文件操作
    JS的DOM和BOM
    JavaScript (内置对象及方法)
    JavaScript 基础(数据类型、函数、流程控制、对象)
    Python基础数据类型(数字、字符串、布尔、列表、元组、字典、集合等)
    MySQL(二)
    数据备份 及 Python 操作 Mysql
  • 原文地址:https://www.cnblogs.com/realsdg/p/7536438.html
Copyright © 2011-2022 走看看