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)中。
Function.method('bind',function(){ //返回一个函数,调用这个函数就像它是那个对象的方法一样。 var method = this, slice = Array.prototype.slice, args = slice.apply(arguments, [1]); return function(){ return method.apply(this, args.concat(slice.apply(arguments, [0]))); }; }); var x = function(){ return this.value; }.bind({value: 666}); alert(x()); //666
Object
object.hasOwnProperty(name)
如果这个object包含了一个名为name的属性,那么hasOwnProperty 方法返回 true。
原型链中的同名属性是不会被检查的。这个方法对name就是hasOwnProperty时不其作用,此时会返回false:
var a = {member: true}; var b = Object.beget(a); // var t = a.hasOwnProperty('member'); //t 是true var u = b.hasOwnProperty('member'); //u 是false var v = b.member; //v是true
RegExp
regexp.exec(string)
exec 方法是使用正则表达式的最强大(和最慢)的方法。