一个你最熟悉但不一定知道的方法
接触javascript也这么久了,自认为差不多的都了解了,一般的特效也能信手拈来.
但是,w3help还是跟我开了个小玩笑.
晚上抽空看w3help的分析,有一篇讲for in 遍历对象中被更新的内置方法的差异的文章,有一段很简单的示例代码
Array.prototype.pop=function(){}; var a=[]; for(var i in a)document.write(i," ");document.write有两个参数,忽然想到,这个write好像是有多个参数的,可以按顺序输出所有参数,一查手册,果然如此,但自己平时一方面也比较少用这个方面,最常用的也只传一个参数,所以把这个参数的问题也给忽略了.(顺带提下,writeln一样)
对于js代码优化,很多资料都有一个建议,就是将大段字符串连接的时候采用数组的join方法,(js的具体性能没测试过,vbs的差别我是很了解的),然而,看到write方法这个多参数的特性后,我又有了一个想法,能否直接将这些字符段当参数传入呢?
当然,有些地方是比较适合的,就是参数明确的时候,直接当作多个参数传入,但很多时候参数并不明确,像数组一样,长度也不一定,也可能声明在多个运行时变量里,也可能存在一个数组里了,怎么将这些字符段当多个参数传入呢?
apply! 对了,就是这个
Apply :应用某一对象的一个方法,用另一个对象替换当前对象.
格式:function Apply(obj,args)
我们这里,并不需要换对象,只是利用它传参数这个问题,apply的第二个参数是一个类数组对象,而且也是可以直接用数组替代的.要输出一个数组,并不需要调用它的join方法,只需像下面这样写
testarr=['a','bbbb','v','大段文字','其它字符']; document.write.apply(document,testarr);输出结果应该很明确了.至于它效率是否比document.write(testarr.join())好些,我并不太清楚了,感觉上应该差不多吧,这个写法,仅作为学习过程中的一点思考.应该有助于理解js的一些行为方法吧.