1,编码相关:encodeURI()和encodeURIComponent()
escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如"春节"的返回结果是%u6625%u8282,,escape()不对"+"编码
主要用于汉字编码,现在已经不提倡使用。
encodeURI():是Javascript中真正用来对URL编码的函数,编码整个url地址,但对特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。对应的解码函数是:decodeURI()。
encodeURIComponent(): 能编码"; / ? : @ & = + $ , #"这些特殊字符。对应的解码函数是decodeURIComponent()。
假如要把带&符号的网址作为URI的参数,则用encodeURIComponent()。
2,Array.prototype.slice(args):这个方法能将给定的args对象转换成数组,前提是args对象有length属性。如:
var a={length:2,0:'first',1:'second'};
Array.prototype.slice.call(a);
结果是:
var a={length:2,0:'first',1:'second'};如果把args的length属性删除,则无法正常转换,会转换成空数组。
function list(){
return Array.prototype.slice.call(arguments);}
var list1=list(1,2,3);// [1, 2, 3]
传给call(参数)里面的是要包含length属性的对象,而函数有个默认的参数就是arguments,有length属性。所以上面这中用法也可以,可以修改成:
function list(arga){
return Array.prototype.slice.call(arga);}
var list1=list({length:2,0:1,1:2});// [1, 2, 3]
这时候传进去的就要是一个对象。
类数组(Array-like)对象
slice()方法可以用来将一个类数组对象/集合转换成一个数组。只需将该方法绑定到这个对象上。比如,JavaScript中函数的参数就是个类数组对象。
functionlist(){returnArray.prototype.slice.call(arguments);}varlist1=list(1,2,3);// [1, 2, 3]
上面示例中Array.prototype.slice.call(arguments),也可以简单的使用[].slice.call(arguments)来代替。另外,还可以使用bind()方法。
3,
网友评论