举一个简单的例子
'abc'.split('').map(function(x) { return x.toUpperCase() }) //['A','B','C']
[].map.call('abc',function(x) { return x.toUpperCase() }) //['A','B','C']
上面两个例子,使用 map() 通常比 split() 更高效,因为后者会创建新的数组
泛型方法
有时实例的原型具有的方法除了对继承自它的对象有用,对很多其他的对象也有用,不继承而使用原型的方法,在调用时,用 call、apply、bind 重新设置this指向,从而使用原型方法。但并不是所有方法都是泛型方法,ECMAScript会明确规范那些是泛型方法。
一些泛型方法
- Array.prototype
-
cancat 连接两个或更多的数组,并返回结果
-
every 返回一个boolean,判断每个元素是否符合func条件
array.every( function( currentValue, index, arr), thisValue )
thisValue: 对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 -
filter 检测数值元素,并返回符合条件所有元素的数组。
-
forEach 数组每个元素都执行一次回调函数,无返回值(能改变数组元素)
-
indexOf 返回数组中某个指定的元素位置(item,start)
-
join 把数组的所有元素放入一个字符串(item,start)
-
lastIndexOf 返回一个指定的字符串值最后出现的位置
-
map返回一个新的Array,每个元素为调用func的结果
-
pop 删除数组的最后一个元素并返回删除的元素
-
push 向数组的末尾添加一个或更多元素,并返回新的长度
-
reduce 将数组元素计算为一个值(从左到右)
-
reduceRight 将数组元素计算为一个值(从右到左)
-
reverse 反转数组的元素顺序
-
shift 删除并返回数组的第一个元素
-
slice 方法可从已有的数组中返回选定的元素(start,end)
-
some返回一个boolean,判断是否有元素是否符合func条件
-
sort 对数组的元素进行排序
-
splice 从数组中添加或删除元素(index,howmany,item1,…,itemX)
-
toLocaleString
-
toString 把数组转换为字符串,并返回结果
-
unshift 向数组的开头添加一个或更多元素,并返回新的长度
-
- Date.prototype
- toJSON
- Object.prototype
- 所有
- String.prototype
- charAt
- charCodeAt
- concat
- indexOf
- lastIndexOf
- loacaleCompare
- match
- replace
- rearch
- slice
- split
- substring
- toLocaleLowerCase
- toLocaleUpperCase
- toLowerCase
- toUpperCase
- trim