javascript学习四~定义函数,面向对象基础,Array对象,String对象

函数的定义

函数嵌套:函数中嵌套函数

作用:可以实现将一个大的功能进行分解成一个一个的小功能(函数),再通过“函数嵌套”将各个小功能(函数)结合在一起,形成一个大的功能。

isNaN()函数

isNaN()是一个全局函数,用于判断其中的字符能否转成数值,如果为true,返回NaN,如果为false,可转成纯数字

 

匿名函数

匿名函数,函数没有函数名,但有函数的定义。一般情况下,可以将一个函数的定义赋给一个变量

将一个函数定义赋给一个变量,那么,这个变量就是具有了函数的特性,也就是这个变量就是一个函数

(1)将一个匿名函数定义赋给一个变量

var a = function(a){ returna*a*a; }

document.write( a(10)) ; //调用函数

 

(2)将一个匿名函数的定义赋给一个数组元素

var arr = new Array();

arr[0] = 100;

arr[1] = 200;

arr[2] = function(a){return a*a*a; }  //将函数的定义赋给数组元素,那么该元素就是一个函数

//调用函数

var result = arr[2];

result(10);

全局变量和局部变量

全局变量:在函数外定义的变量,就叫“全局变量”,可以在网页的任何地方(包括函数内)都可以使用。

局部变量:只能在函数内来使用的变量,就叫“局部变量”。

注意:任何地方省略var关键字,定义的变量都是“全局变量”,因此,一般情况下,不要省略var关键字。

 

 

基本数据类型和复合数据类型的区别

基本数据类型:基本数据类型是将变量名和变量值存储在“快速内存”“栈内存”中。如果将一个基本的数据类型的变量的值赋给另一个变量的话,相当于将一个变量的值“复制”一份赋给另一个变量。这两个变量间没有任何联系,是相互独立的,也就是:修改一个变量的值,另一个变量的值不会发生改变

变量传数值,就是“复制”一个值给另一个变量。

复合数据类型:复合数据类型的数据存储分两个部分,一是变量名和数据的地址,存在“快速内存”中;二是将实际的数据存在“慢速内存”“堆内存”中。将一个引用的变量赋给另一个变量,它赋的是数据地址,而不是真正的数据。

 

函数作为数据传递给其它变量

其它变量,可以是一个基本数据类型的变量,也可以是一个数组元素,还可以是对象的属性

 

对象的概念

一、对象的概念

现在世界中,有很多对象,比如:人是对象、电脑是对象、桌子是对象等。

计算机是解决现实问题的一个工具,把现实中的对象挪到了计算机中。

简单的说,对象由属性和方法构成。

 

二、对象的分类

 

自定义对象(对象的简单应用

在使用对象,对象必须先“存在”,才能对相应“对象”进行操作。

在操作“对象”之前,应该先创建一个“对象”。

(1)使用new关键字和Object()构造函数来创建

var obj = new Object();  //创建一个空对象

obj.name = “周更生”;   //增加一个属性

obj.school= “北京理工大学”;  //增加一个属性

//方法就是函数,方法在定义时不需要加括号给方法赋的值,一定是一个函数。

obj.showInfo= function(){

                            varstr = obj.name+“毕业于”+obj.school;

                            document.write(str );

}

//对象的使用

obj.name = “张立峰”  //修改内容

obj.edu = “大专”;       //增加一个属性

delete  obj.school;      //删除一个对象的属性

document.write( obj.name );  //输出一个对象的属性值

obj.showInfo( );  //对象方法的调用,加上小括号

 

 

(2)使用{ }来创建一个对象

var obj = {

                     name:“周更生”,

                     school:“北京理工大学”,

                     showInfo:getInfo  //将一个普通函数传给对象属性,这里千万不要带( )。如果带(),表示将函数的执行结果赋给对象属性,这个执行结果是“基本数据类型”。

}

//定义一个普通函数

function getInfo()

{

       var str = obj.name+“的毕业于”+obj.school

       document.write( str );

}

 

//调用对象的方法

obj.showInfo();  //对象方法

getInfo(); //调用普通函数

 

//2)将一个普通函数作为数据传给一个变量

var a = getInfo;  //直接将函数名赋给一个变量,是将函数的地址传递给了另一个变量

a( ); //调用函数

 

//3)将一个普通函数作为数据传给一个数组元素

var arr = new Array();

arr[0] = 100;

arr[1] = getInfo;  //将一个函数的地址,传给了数组元素,所以arr[1]就成了函数了

arr[1]( );   //调用函数,相当于 getInfo();

 

内置对象String对象——字符串对象

一、创建String字符串对象

第一种:使用new关键字和String()构造函数来创建

       varstrObj = new String(“广州传智播客欢迎您!”);

       var len = strObj.length; //统计字符的长度

       ……

第二种:一个字符串变量,本身就是一个String对象(最常用

       varstr = “广州传智播客欢迎您!”;

       var len = str.length;

       ……

二、String对象的方法

1、charAt(index)方法

       功能:返回指位位置索引号的一个字符

       注意:字符串的下标同数组一样,都是从0开始的正整数

       举例:

              var str = “广州传智播客欢迎您!”;

              document.write(str.charAt(0) );  //输出下标为0的一个字符

 

2、indexOf(char)方法

       功能:在字符串中,从左到右,查找char子字符串,

返回值:如果找到则返回所在位置索引号index,如果没有找到,返回-1

       举例:

              varemail = “beijing2000@126.com”;

varindex = email.indexOf(“@”)             

if( index!=-1)

{

       Document.write(“邮箱合法”);

}else

{

       Document.write(“邮箱不合法”);

}

3、lastIndexOf(char)方法

       功能:在字符串中,从右到左,查找char子字符串

       返回值:如果找到返回位置索引号,否则,返回-1。

       举例:

              varfilename = “20140.721.123.jpg”//扩展名的点,应该从右往左

             

 

4、substr(startIndex[,length])方法

       功能:从原始字符串中,返回一个指定的子字符串。

       参数:

              startIndex:指子字符串的开始索引号;

              length:为可选项,指从指定位置处,取出length个字符,如果省略length,一直取到结尾

        举例:

              varfilename = “20140.721.123.jpg”//扩展名的点,应该从右往左

              varindex = filename.lastIndexOf(“.”);

              varstr = filename.substr(index);  //从index索引号开始,一直取到结尾

5、substring(startIndex[,endIndex])方法

       功能:从原始字符串中,取出一个子字符串

       参数:

              startIndex:指子字符串的开始索引号;

              endIndex:为可选项,指定结束位置的索引号,如果省略endIndex,功能与substr()一样。

 

6、split(分割符)方法

       功能:将一个字符串,用指定的分割符分成一个数组。

       语法:array strObj.split(分割符)

       举例:

var today = new Date();

var week = today.getDay(); //取值0-6的星期值       

var str_week = “星期日,星期一,星期二,星期三,星期四,星期五,星期六”;

var arr_week = str_week.split(“,”);

document.write( arr_week[week] );

 

7、toLowerCase()转小写、toUpperCase()转大写

       Str.toLowerCase():转成全小写

       Str.toUpperCase():转成全大写

 

8、localeCompare()方法

       功能:使用本地的排序规则(根据所使用的操作系统,简体中文操作系统)对中文进行排序

       str1.localeCompare(str2)

       比较的结果:

              str1>str2  返回1的值

              str1==str2  返回0的值

              str1<str2   返回-1的值

 

Array对象

1、length属性

       功能:统计数组中元素的个数

       举例:var len = arrObj.length

 

2、 join()方法

       功能:将数组中各个元素,通过指定的连接符,连成一个字符串。

       语法:string arrObj.join(连接符)

       举例:var str = arrObj.join(“,”)

 

3、删除数组元素shift()、pop(),与delete运算符的区别

       shift():删除数组中第一个元素,并将数组的长度减一;

       pop():删除数组中最后一个元素,并将数组的长度减一;

var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];

document.write("数组当前的长度为:"+arr.length+"<hr>");

arr.shift();

document.write("数组当前的长度为:"+arr.length+"<hr>");

arr.pop();

document.write("数组当前的长度为:"+arr.length+"<hr>");

说明:delete只能删除数组元素的值,而所占空间还存在shift()pop()删除数组元素后,所占空间不存在

 

4、增加数组元素unshift()和push()方法

       unshift():在数组的开头增加一个元素,并将数组的长度加一;

       push():在数组的结尾增加一个元素,并将数组的长度加一;

 

       注意:shift()pop()unshift()push()它们是直接在原数组进行操作,因此不需要再创建变量

 

5、反转数组元素的顺序reverse()

var arr = [1,2,3,4,5,6,7];

arr.reverse(); //反转数组中元素的顺序

document.write(arr);  //[7,6,5,4,3,2,1]

6、数组中元素的排序sort()

       功能:对数组中元素进行排序

       语法:sort([sortby])

       参数:

              如果没有指定sortby参数,默认排序是按照字母的先后顺序排序的;

              sortby是一个函数名,这个函数规定元素的排序规则

arr.sort(orderby); //将函数的地址传给sort方法

function orderby(a,b)

{

       returna-b;   //对数值大小进行排序

}

a-b的结果:

              a-b >0  返回大于0的值

                            a-b= 0  返回等于0的值

                            a-b< 0  返回小于0的值

 

//实例:按拼音的先后顺序排列

var arr = ["安庆市","安徽省","河南省","河北省","北京市"];

arr.sort(orderby2);

function orderby2(str1,str2)

{

    returnstr1.localeCompare(str2);

}

document.write(arr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值