JavaScript学习记录-函数与对象

一、函数是定义一次但却可以调用或执行任意多次的一段JS代码。函数有时会有参数,即函数被调用时指定了值的局部变量。函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值。

1、函数声明

ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体。 

function test() {                                          //没有参数的函数
       alert('只有函数被调用,此句会被执行');
}
test();
                                                       //直接调用函数
function test(name, age) {                              //带参数的函数
       alert('你的姓名:'+name+',年龄:'+age);
}
test('bert',24);                                             //调用函数,并传参

2、arguments对象

函数体内通过arguments对象来接收传递进来的参数。

function test(){
    return arguments[0]+arguments[1]+arguments[2];
}
alert(test("Hello","World","Happy","Everyday"));  //输出HelloWorldHappy

返回的arguments对象可以少于最后赋值的数量,如果多于则会最后返回undefined。

可利用length属性,来智能的判断有多少参数,然后把参数进行合理的应用。比如,要实现一个加法运算,将所有传进来的数字累加,而数字的个数又不确定。

function test(){
       var sum = 0;
       if (arguments.length == 0) return sum;            //如果没有参数,退出
       for(var i = 0;i < arguments.length; i++) {        //如果有,就累加
              sum = sum + arguments[i];
       }
       return sum;                                       //返回累加结果
}
alert(test(1,2,3,4,5));

二、对象

对象就是一种类型,即引用类型。对象的值就是引用类型的实例。ECMAScript中引用类型是一种数据结构:用于将数据和功能组合在一起,常称为类。但是EMCAScript中没有传统面向对象语言所支持的类和接口等基本结构。

1、Object类型

创建的两种方式:(1)new运算符,(2)字面量表示法

(1)new运算符

var test = new Object(); 
test.name = "bert";
test.age = 24;
alert(test.age);

(2)字面量表示法

实际开发过程中,更推荐字面量的声明方式。因为它清晰,语法代码少,而且还给人一种封装的感觉。字面量也是向函数传递大量可选参数的首选方式。

var test = {
    name:"bert",
    age:24
};  //实验证明,这里加分号或者不加没有影响
alert(test.age);
// 也可以这样输出 alert(test["age"]);

给对象创建方法

var test = {
    run:function(){       //对象中方法
        return "运行";    
    }
}
alert(test.run());        //调用对象中方法

2、Array类型

ECMAScript中数组每个元素可保存任何类型,也可以调整大小。

创建Array类型两种方式:(1)new运算符,(2)字面量表示法

(1)new运算符

var test = new Array("bert",24,"student");

(2)字面量表示法

var test = ["bert",24,"student"];

使用length属性获取数组元素量

alert(box.length); //获取数组元素个数


alert[test.length] = "加油"; //通过length给数组增加一个元素

三、对象中的方法

1、JS中所有对象都有这三种方法:(1)toLocaleString(),(2)toString(),(3)valueOf()

(1)toLocaleString()

把数组转化为本地字符串,使用地区特定的分隔符把生成的字符串连起来。

(2)toString()

把数组转换成字符串,返回值与没有参数的join()方法所返回的字符串相同

(3)valueOf()

返回Array()对象的原始值。

其中,join()方法

默认情况下,数组字符串都会以逗号隔开。如果使用join()方法,则可以使用不同的分隔符来构建这个字符串。

var test = [
    "bert",
    24,
    "Hello"
];
document.write(test.join("|")); //输出结果:bert|24|Hello

2、栈方法

ECMAScript为数组提供了pop()和push()方法。push()方法可以接受任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后的数组长度。pop()方法从数组末尾移除最后一个元素,减少数组的长度,并返回移除的元素。

var test=[1,2,3];
test.push(4);
alert(test); //输出结果 1,2,3,4
alert(test.pop()); //输出结果 4

3、队列方法

列队在数组的末端添加元素,从数组的前端移除元素。通过push()向数组末端添加一个元素,返回添加的元素。通过shift()方法从数组前端移除一个元素,返回移除的元素。

var test=[1,2,3];
alert(test.push(4)); //返回数组末尾添加的元素4
alert(test.shift()); //返回数组开头移除的元素1

ECMAScript还为数组提供了一个unshift()方法,它和shift()方法的功能完全相反。通过unshift()方法从数组前端添加一个元素,返回此时数组的长度。

var test=[1,2,3];
alert(test.push(4)); 
alert(test.unshift(0)); //在数组开头添加元素0,返回最后数组长度大小5

4、重排序方法

数组中存在两个可直接用于排序的方法:reverse()sort()

(1)reverse() 逆向排序

var test= [1,2,3,4,5];    //数组
alert(test.reverse());    //逆向排序方法,返回排序后的数组
alert(test);               //源数组也被逆向排序了,说明是引用

(2)sort() 从小到大排序

var test = [4,1,7,3,9,2];
alert(test.sort());   //从小到大排序,返回排序后的数组      
alert(test);          //源数组也被从小到大排序了

5、操作方法

(1)concat()方法可以基于当前数组创建一个新数组。

var test1 = [1,2,3];				//当前数组
var test2 = test1.concat("4");		//创建新数组,在原有数组上添加新元素
alert(test2);					//输出新数组
alert(test1);					//原先数组没有任何变化

(2)slice()方法可以基于当前数组获取指定区域元素并创建一个新数组,即在当前数组中截取一段变成一个新的数组。

slice有两个参数,slice(start,end):start  必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。即-1 指最后一个元素,-2 指倒数第二个元素。end  可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

var test1= [1,2,3,4,5];				
var test2 = test1.slice(1,3);						
alert(test2);	//截取的新数组,不算最后一个下标元素,2,3							
alert(test1);	//原先数组1,2,3,4,5					

(3)splice() 方法

向/从数组中添加/删除项目,然后返回被删除的项目。

var test1 = [1,2,3,4,5];				
var test2 = test1.splice(1,3);					
alert(test2);	//截取下标从1到3的元素,得到新数组 2,3,4							
alert(test1);	//原先数组被破坏 1,5

 

 

 

猜你喜欢

转载自blog.csdn.net/bertzuo/article/details/81167435
今日推荐