日期:2014-05-16  浏览次数:20364 次

javascript方法(Methods)
1、Array
array.concat(item..)
concat方法返回一个新数组,它包含array的浅复制(shallow copy)并将1个或者多个参数item附加在其后。如果参数item是一个数组,那么它的每个元素会被分别添加。
Example:
var a = ['a', 'b', 'c'];
var b = ['x', 'y', 'z'];
var c = a.concat(b,true);
//c是['a','b','c','x','y','z',true]

array.join(separator)
join方法是一个array构造成一个字符串。它将array中的每个元素构造成一个字符串,并用一个separator为分隔符把它们连接在一起。默认的separator是 ','为了实现间隔的连接,我们可以使用空字符串作为separator。
如果你想把大量的片段组装成一个字符串,把这些片段放到一个数组中并用join方法连接它们通常比用+元素运算符连接这些片段要快。
var a = ['a', 'b', 'c'];
a.push('d');
var c = a.join(''); //c是'abcd';

array.pop()
pop和push方法使数组array像堆栈(stack)一样工作。pop方法移除array中的最后一个元素并返回该元素。如果该array是空的,它返回undefined。
var a = ['a', 'b', 'c'];
var c = a.pop(); //a是['a', 'b'] & c 是 'c'

pop可以像这样实现:
Array.method('pop', function (){
    return this.splice(this.length-1,1)[0];
});

array.push(item..)
push方法将一个或者多个参数item附加到一个数组的尾部.不像concat方法那样,它会修改该数组array,如果参数item是一个数组,他会将参数数组作为单个元素整个添加到数组中。它返回这个数组array的新长度值。
var a = ['a', 'b', 'c'];
var b = ['x', 'y', 'z'];
var c = a.push(b,true);
// a 是 ['a', 'b', 'c', ['x', 'y', 'z'], true ]
// c 是 5;

push可以像这样实现:
Array.method('push',function(){
   this.splice.apply(
       this,
       [this.length, 0].
           concat(Array.prototype.slice.appley(arguments)));
   ruturn this.length;
});

array.reverse()
reverse方法反转array中的元素的顺序。它返回当前的array:
var a = ['a', 'b', 'c'];
var b = a.reverse();
//a 和 b 都是 ['c', 'b', 'a']

array。shift()
shift 方法移除数组array中的第一个元素并返回该元素。如果这个数组array是空的,他会放回undefined。shift通常比pop 慢多了。
var a = ['a', 'b', 'c'];
var c = a.shift(); // a 是 ['b', 'c'] & c 是 'a'

shift还可以这样实现:
Array.method('shift', function (){
     return this.splice(0,1)[0];
});

array.sort(comparefn)
sort方法对array 中的内容进行适当的排序。它不能正确地给一组数字排序:
var n = [4, 8, 15 ,18 ,22];
n.sort();
//n 是 [15, 18, 22, 4, 8]

array.slice(start, end)
slice 方法对array中的一段作浅复制。第一被复制的元素是array[start]。他将一直复制到array[end]为止。end参数是可选的,并且默认值是该数组的长度array.length。如果两个参数中任何一个是负数,array.length将和它们相加来试图使用它们成为非负数。如果start大于等于array.length,得到的结果将是一个新的空数组。千万不要把slice和splice混淆了。
var a = ['a', 'b', 'c'];
var b = a.slice(0, 1); //b 是 ['a']
var c = a.slice(1);    //c 是 ['b', 'c']
var d = a.slice(1, 2); //d 是 ['b']

array.splice(start,deleteCount, item..)
splice方法从array中移除1个或者多个元素,并用新的item替换它们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素个数。如果有额外的参数,哪些item都将 插入到所移除元素的位置上。它返回一个包含被移除元素的数组。
splice最主要的用处是从一个数组中删除元素。请不要把splice和slice混淆了:
example:
var a = ['a', 'b', 'c'];
var r = a.splice(1, 1, 'ache', 'bug');
//a 是 ['a', 'ache', 'bug', 'c']
//r 是 ['b']

splice可以像这样实现:
loading...

array.unshift(item..)
unshift 方法像push方法一样用于将元素添加到数组中,但它是把item插入到array的开始部分而不是尾部。它返回array的新的长度值:
var a = ['a', 'b', 'c'];
var r = a.unshift('?', '@');
//a 是 ['?', '@', 'a', 'b', 'c'];
// r 是 5 
//ie6之前的browse中,JScript引擎对unshift方法的实现有错误,它的返回值永远是undefined。ie7之后的browse修正的这个错误。

unshift还可以这样实现:
Array.method('unshift',function(){
    this.splice.apply(this,
        [0,0].concat(Array.prototype.slice.apply(arguments)));
    return this.length;
});


Function
function.apply(thisArg,argArray)
apply方法调用函数function,传递一个将被绑定到this上的对象和一个可选的参数数组。
apply方法被用在apply调用模式(apply invocation pattern)中。