今天在翻犀牛书,突然看到书中的一个例子中有这样一句代码 :
>this.buffer += Array.prototype.join.call( arguments, "" );
看到call,我突然就想起来他是用来改变函数内部this指向的,但是具体call的用法却有点模糊了,所以又温习了一下call的用法,又多了一点粗浅的体会。
call方法的语法是这样的
>fun.call(thisArg[,arg1[,arg2[,...]]])
其中thisArg就是改变fun中this指向的关键,他可以是任意JavaScript对象,后面每个值都用逗号隔开,作用是指定函数的参数。
现在回到上面的代码中来看,这段代码是写在函数内的语句,简单分析下就是让函数的参数形成的类数组对象 arguments,具有array原生的方法join(), 反过来说就是把 array中join方法执行上下文指向 arguments。
下面代码也是同理:
>var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
网友评论