拓展 Array 方法

为 Array 对象扩展了一个迭代器之后,就可以利用这个法代器进一步拓展 Array 的方法,使其能够完成更多的实用功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Array.prototype.each = function( f ) {  //数组法代器,扩展 Array 原型方法 
try{ //异常处理,避免因为不可预测的错误导致系统崩溃
this.i || ( this. i = 0 ); //定义临时变量,用来作为法代计数器
if( this.length > 0 && f.constructor == Function ) {
//如果数组长度大于 0并且参数为函数
while( this.i < this.length ) { //遍历数组
var e = this[this.i]; //获取当前元素
if( e && e.constructor == Array ) { //如果元素存在,且为数组
e.each ( f ) ; //递归调用法代器
}else{ //否则,在元素上调用参数函数,并把元素值传递给函数
f.apply(e, [e]);
}
this.i++; //递加计数器
}
this.i = null; //如果通历完毕,则清空计数器
}
}
catch(err){ //捕捉以后
}
return this; //返回当前数组
}

//调用该迭代器
var a = [1, [2, [3, 4]]];
var f = function( x ) {
alert(x);
}
a.each(f); //调用迭代器,为每个元素执行一次函数传递

call/apply/bind

使用 call() 和 apply()

call 和 apply是 Function 对象的原型方法,它们能够将特定函数当作一个方法绑定到指定对象上并进行调用。具体用法如下:

1
2
function.call(thisobj, args... ) 
function.apply(thisobj, args)

使用 arguments 对象

arguments 对象表示参数集合,它是一个伪类数组,拥有与数组相似的结构,可以通过数组下标的形式访问函数实参值,但是没有基础 Array 的原型方法

js中点击返回顶部

1
2
3
handleScrollTop(){
window.scrollTo(0, 0);
}

javascript中new url()属性,轻松解析url地址

首先写一个假的地址(q=URLUtils.searchParams&topic=api)相当于当前的window.location.href

1
2
3
4
5
6
7
8
9
10
11
const urlParams = new URL(window.location.href);
urlParams.searchParams.has("topic") === true; // true
urlParams.searchParams.get("topic") === "api"; // true
urlParams.searchParams.getAll("topic"); // ["api"]
urlParams.searchParams.get("foo") === ""; // true
urlParams.searchParams.append("topic", "webdev");
urlParams.searchParams.toString(); // "q=URLUtils.searchParams&topic=api&topic=webdev"
urlParams.searchParams.set("topic", "More webdev");
urlParams.searchParams.toString(); // "q=URLUtils.searchParams&topic=More+webdev"
urlParams.searchParams.delete("topic");
urlParams.searchParams.toString(); // "q=URLUtils.searchParams"
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×