• String类型,Function类型


    1.String类型:
      1)创建String对象:
        var str=new String(s);
        String(s);
        参数:参数 s 是要存储在 String 对象中的值或转换成原始字符串的值。
        返回值:当String()和运算符new一起作为构造函数使用时,它返回一个新创建的String对象,存放的是字符串s
              当不用 new 运算符调用String()时,它只把 s 转换成原始的字符串,并返回转换后的值。


      2)String对象属性:
        length:字符串的长度
        var str='abcde';
        alert(str.length);  //5


      3)字符串操作:
        --replace():替换字符串中与正则表达式匹配的子串
        --match():找到与字符串中一个或多个正则表达式匹配的项
        --search(): 查找/检索与正则表达式相匹配的值,返回字符串的索引下标
        --substring(): 提取字符串中两个指定的索引号之间的字符,做字符串截取
        --charAt(): 获取字符串中某个字符
        --split(): 以字符串中含有的某个符号分割字符串,返回数组
        --concat():连接字符串
        --trim():删除字符串前缀和后缀的所有空格,返回新的字符串(IE9及FF,Chrome等兼容)
        --slice():提取字符串的片断,并在新的字符串中返回被提取的部分
        --toLocaleLowerCase():按照本地方式把字符串转换为小写
        --toLocaleUpperCase():按照本地方式把字符串转换为大写
        --toLowerCase():把字符串转换为小写
        --toUpperCase():把字符串转换为大写

         var str='abcdef';
         str.search('b');    //1,返回字符串的索引下标
         str.search('m');    //-1,没有找到返回的是-1
         str.substring(2,5);    //cde,指定起始位置和结束位置时,返回的值不包括结束位置的字符
         str.substring(2);    //cdef,只指定起始位置时,默认截取到字符串末尾
         str.charAt(3);    //d,获取的这是字符串中的一个字符
         var str2='ab-cd-ef';
         str2.split('-');    //ab,cd,ef    返回数组

    2.Function类型:
      我们所说的函数也是一个对象,每个函数都是Function类型的实例
      1)函数的定义:
       --使用函数声明语法定义:
         function sum(n1,n2){
            return n1+n2;
         }
       --使用函数表达式定义:通过sum变量就可以引用函数,末尾有分号,就像声明其他变量一样
         var sum=function sum(n1,n2){
            return n1+n2;
         };


      2)对函数名的理解:函数名仅仅是指向函数的指针,函数名与包含对象指针的其他变量没有区别,
          也就是说一个函数可能有多个函数名,
          function sum(n1,n2){
            return n1+n2;
          }
          alert(sum(10,10));  //20
          var anotherSum=sum;
          alert(anotherSum(10,10)); //20
          sum=null;
          alert(anotherSum(10,10)); //20
        注:当使用不带圆括号的函数名是访问函数的指针,而非调用函数.
          上面的例子中,sum和anotherSum就指向了同一个函数,当其中一个和函数没有关系时,另外一个也可以正常调用函数


      3)关于函数没有重载的理解:当声明两个函数名相同的函数时,则后面的函数会把前面的函数覆盖掉
          function sum(n1){
            return n1+10;
          }
          function sum(n1){
            return n1+20;
          }
          alert(sum(10)); //30


      4)关于函数声明和函数表达式:
        --解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁,解析器会先读取函数声明,

       使其在读取任何代码之前可以被访问到,而函数表达式必须等到解析器执行到它所在的代码行才能被执行
        1.一个函数声明.一个表达式,可以正常执行
          alert(sum(10,10));
          function sum(n1,n2){
            return n1+n2;
          }
        2.两句都是表达式,解析器会按顺序读取,所以在执行第一句时就会报错,下一句函数表达式不会执行,
          alert(sum(10,10));
          var sum=function(n1,n2){
            return n1+n2;
          }


      5)函数内部属性:在函数内部有两个特殊的对象:arguments,this
        1.arguments:可变参/不定参--是所有参数组成的一个数组,每个参数是其中的一个元素,具有数组的性质
                arguments.length,arguments[1]
          写一个函数:
              css(oDiv,'width');  //有两个参数时,获取oDiv样式
              css(oDiv,'width','200px');  //有三个参数时,设置oDiv样式
              function css(){
                  if(arguments.length==2){
                      return arguments[0].style[argument[1]];
                  }else{
                      return argument[0].style[argument[1]]=arguments[2];
                  }
              }
           或:用三个参数代替arguments,此时arguments[0]==obj,arguments[1]==name,arguments[2]==val
            css(oDiv,'width');  //有两个参数时,获取oDiv样式
              css(oDiv,'width','200px');  //有三个参数时,设置oDiv样式
              function css(obj,name,val){
                  if(arguments.length==2){
                      return obj.style[name];
                  }else{
                      return obj.style[name]=val;
                  }
              }


        2.this:当前函数/方法属于哪个对象this就指哪个对象
          oDiv.onclick=function(){
            this.style.background='red';   //当前函数属于oDiv,this就指oDiv
          }
          全局函数在没有具体对象的情况下直接调用时,this指的是window
          function show(){    //全局的函数/方法,属于window
                alert(this);
            }
          show();  //弹出[object window]
            ==>等价于:
            window.show=function(){
                alert(this);
            }
          show();  //弹出[object window]


      6)函数属性和方法:ES中函数就是对象,因此函数也有属性和方法
         1.函数属性:
           --length:表示函数接收的参数的个数
           --prototype:对于ES中的引用类型而言,prototype保存了他们所有的方法,在原型中再具体介绍


        2.函数方法:call(),apply():都是在特定的作用域中调用函数的方法,实际上等于设置函数体内this对象的值
          关于函数调用:
              function show(){
                  alert(this);
              }
              show();    //弹出window
            平时的调用方法是简写的,函数调用完整的写法
            show.call();    //弹出window
            show.call(12);    //弹出12,call里面的值可以改变函数中的this
            ==>当函数有参数时,call里面的值既可以改变this,也可以改变传的参数,不过改变this的值必须放在第一位
            function show(a,b){
                alert('this的值是:'+this+' a的值是:'+a+'的值是:'b);
            }
            show.call('abc',12,3);    //this=abc,a=12,b=3


          --apply()方法:有两个参数,一个是函数的作用域,另一个是参数数组/arguments
             function sum(sum1,sum2){
                return sum1+sum2;
             }
             function callSum1(sum1,sum2){
                return sum.apply(this,arguments);
             }
             function callSum2(sum1,sum2){
                return sum.apply(this,[sum1,sum2]);
             }
             alert(callSum1(10,10));  //20
             alert(callSum2(10,10));  //20
          注:1)apply()与call()方法:基本相同,但是区别在于接收参数的方式不同
                call()方法必须将传递的第二参数逐个写出来,而apply()方法可以arguments
             2)call()和apply()方法真正的用处在于:能够扩充函数赖以运行的作用域
                window.color='red';
                var temp={color:'blue'};
                function showColor(){
                  alert(this.color);
                }
                showColor();   //red;
                showColor.call(this);  //red;
                showColor.call(window);  //red;
                showColor.call(temp);  //blue

  • 相关阅读:
    ubuntu 14.04 下实现浏览器接收UDP视频流
    附加作业:黄金点游戏
    [福大软工] Z班 软件工程实践总结 作业成绩
    [福大软工] Z班——Beta现场答辩反馈
    [福大软工] Z班——个人技术博客评分
    [Gamma阶段]第十次Scrum Meeting
    [Gamma阶段]第九次Scrum Meeting
    [Gamma阶段]第八次Scrum Meeting
    [Gamma阶段]第七次Scrum Meeting
    [Gamma阶段]第六次Scrum Meeting
  • 原文地址:https://www.cnblogs.com/yufann/p/JS-Summary3.html
Copyright © 2020-2023  润新知