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+'\na的值是:'+a+'\b的值是:'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
String类型,Function类型的更多相关文章
- JavaScript笔记——引用类型之Object类型和Function类型
<JavaScript高级程序设计>中介绍的几种JavaScript的引用类型,本文只记了Object跟Function类型 Object类型 创建对象 var person = new ...
- 后台返回字符串类型function的处理 (递归算法)
$(function(){ $.ajax({ type: "post", url: "${ctx}/modules/fos/reference/echart", ...
- JS中String类型转换Date类型 并 计算时间差
JS中String类型转换Date类型 1.比较常用的方法,但繁琐,参考如下:主要使用Date的构造方法:Date(int year , int month , int day)<script& ...
- function类型(c++11)
1.c++五大可调用的对象 可调用的对象常常作为泛型算法的实参 1)函数 2)函数指针 函数名其实也是函数指针,只不过函数名是一个常量指针,它的值不能改变,只能指向该函数,不能改变它的值让它指向别的函 ...
- 引用类型-Function类型
Function类型 定义函数的三种方式: 1.函数声明 function sum(num1,num2){ return num1 +num2; } 2.函数表达式 var sum = functio ...
- 【笔记】js Function类型 内部方法callee
运用function实现阶乘 以往的做法是如下的 function factorial(num){ if(num <= 1){ return 1; }else{ return num * fac ...
- Function类型
1.每个函数都是Function类型的,和其他引用类型一样都具有属性和方法.函数也是对象,因此函数实际上是一个指向函数对象的指针. 函数声明语法定义: 方法1: function sum(num1,n ...
- JavaScript高级 Function类型
· Function类型 (属于引用类型) 1.JS中,有的函数均是对象,这个一个非常有特点的地方.它既然是对象,那么它的构造函数是谁呢?就是Function.(例如:function Pers ...
- 浅析JavaScript之Function类型
JavaScript中的函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上只是指向函数对象的指针,保存函数在堆内存中的地 ...
随机推荐
- c#中文转全拼或首拼
参考:http://www.jb51.net/article/42217.htmhttp://blog.csdn.net/cstester/article/details/4758172 Chines ...
- asl 和 lgpl的区别
按照使用条件的不同,开源软件许可证可以分为三类(严苛程度递减) 1. 使用该开源软件的代码再散布(redistribute)时,源码也必须以相同许可证公开. 代表许可类型:GPL, AGPL 2. 使 ...
- jQuery库中的变量$和其它类库的变量$冲突解决方案
jQuery.noConflict();//把变量$给其它插件 /* 由于把jQuery插件中的变量$给了其它插件使用 那么在调用jQuery插件的时候只能使用jQuery 但是这样很不方便 1.其实 ...
- 栈的C++实现(数组)——创建-push-pop-top-清空栈-处理栈
今天学习了利用数组方式的栈的C++实现,这种方式跟指针实现有很多不一样的地方: 栈的指针实现,栈的创建申请头结点,push需要申请新的结点,pop释放结点,这些结点都放在第一个位置,top时,S-&g ...
- Java之方法重载(笔记)
Java是根据参数类型和个数的不同实现重载. 1.当参数类型是基本类型,但不完全匹配. void test(int i) { } void test(float f) { } public stati ...
- ARM的一些基本概念
MPU介绍: mpu是一个芯片,重力加速器(加速度)和陀螺仪(角速度) iic总线.在板上有iic控制器 连接着 最多128个外设,每个外设有地址,可以通信. 寄存器: cpu中的寄存器是为了加快运算 ...
- Array-练习-自定义功能
//html part <script type="text/javascript" src="out.js"></script> &l ...
- A trip through the Graphics Pipeline 2011_05
After the last post about texture samplers, we’re now back in the 3D frontend. We’re done with verte ...
- 在 MVC4 中使用 Uploadify 3.2 - 1
Uploadify 是 JQuery 一个著名的上传插件,利用 Flash 技术,Uploadify 越过浏览器的限制,控制了整个上传的处理过程,实现了客户端无刷新的文件上传,这样就实现了在客户端的上 ...
- 查留言总人数的sql语句
select count(distinct user_id) from bidproduct