函数类型
函数function,是一个对象,也是Function类型的一个实例。而函数名,则是指向这个函数对象的一个指针。函数的定义,有两种方法,函数声明和函数表达式。
一、没有重载
如果声明了两个同名函数,则后面的函数会覆盖掉前面的函数。
二、函数声明与函数表达式
解析器会先读取函数声明,然后再执行函数表达式。有点像变量提升。
但是用函数表达式定义的函数,就没有变量提升的功能了,如果函数的调用在函数表达式之前,就会报错。
三、作为值的函数
函数可以作为值来使用。
function compare(attr){ return function(obj1,obj2){ var value1=obj1[attr]; var value2=obj2[attr]; if(value1>value2){ return -1; }else if(value1<value2){ return 1; }else{ return 0; } }; } var data=[{name:"Alice",age:18},{name:"Tony",age:10},{name:"Wang",age:20}]; var rank=data.sort(compare("age")); console.log(rank)
上面这段代码,作用是将一组对象,按照对象里面的年龄进行从大到小进行排序。采用的方法是sort方法。sort方法里面传的参数是一个函数。
这个函数在定义的时候,定义的是对象的属性。获取对象的属性,采用的是方括号的方法。obj[attr]。方括号内的值是字符串,所以传入的时候要加双引号。
如果不是用这种方式获取属性值,可以用点后面跟属性值的方法。
var value1=obj1.attr;
但是由于attr传进来的时候仍然是字符串,所以这种方法得到的value1是undifinde。
对象的属性值获取方法如下:
var obj=[{name:"Alice",age:18},{name:"Tony",age:10},{name:"Wang",age:20}]; console.log(obj[1]["name"]);//Tony console.log(obj["name"]);//undifined