js中apply的用法(转)
来源:互联网 发布:工业怪兽 知乎 编辑:程序博客网 时间:2024/04/30 13:15
之一------(函数的劫持与对象的复制)
关于对象的继承,一般的做法是用复制法: Object.extend
见protpotype.js 的实现方法:
}
除此以外,还有一种不太常见的方法:
apply 方法能劫持(<<Ajax inAction>>书中用到"劫持"一语,很生动啊)另外一个对象的方法,
继承另外一个对象的属性。
示范代码如下:
Apply示范代码
}
}
}
p1.sayhello()
s1.show()
s1.sayhello()
alert(s1.funcName)
学生类本来不具备任何方法,但是在 Person.apply(this,arguments)
本文,作为抛砖引玉,只对 apply 的用法(在对象继承和函数劫持方面)做个小示范,其他更深入的应用要
靠大家慢慢去领会了。
之二------利用Apply的参数数组化来提高
我们再来聊聊Function.apply() 在提升程序性能方面的技巧。
我们先从 Math.max() 函数说起,
比如
alert(Math.max(5,8))
alert(Math.max(5,7,9,3,1,6))
但是在很多情况下,我们需要找出数组中最大的元素。
var arr=[5,7,9,1]
alert(Math.max(arr))
function getMax(arr){
}
这样写麻烦而且低效。如果用 apply呢,看代码:
function getMax2(arr){
}
两段代码达到了同样的目的,但是getMax2却优雅,高效,简洁得多。
看性能测试:
getMax性能测试
<script>
var myArr=new Array()
function fillRnd(arrLen){
}
function getMax(arr){
}
function getMax2(arr){
}
myArr=fillRnd(20*10000)
var t1=new Date()
var max1=getMax(myArr)
var t2=new Date()
var max2=getMax2(myArr)
var t3=new Date()
if (max1!==max2) alert("error")
alert([t3-t2,t2-t1])
</script>
通过20万个数据的比较, getMax2 时间为 96ms 而 getmax时间为464。 两者相差5倍
var arr1=[1,3,4];
var arr2=[3,4,5];
如果我们要把 arr2展开,然后一个一个追加到 arr1中去,最后让
arr1.push(arr2)
我们只能用一个循环去一个一个的push
var arrLen=arr2.length
for(var i=0;i<arrLen;i++){
}
自从有了 Apply
Array.prototype.push.apply(arr1,arr2)
- js中apply的用法(转)
- js中apply的用法(转)
- Js中apply()的用法
- JS中apply与call的用法
- js中call和apply的用法
- JS中apply与call的用法
- JS中apply与call的用法
- js中call和apply的用法
- !!js中call、apply、bind的用法
- js中call与apply的用法
- js中call()与apply()的用法
- js中call、apply、bind的用法
- JS中call()和apply()的用法
- js中apply函数用法
- Js中call和apply的区别和用法
- js中继承的几种用法apply,call,prototype
- js中继承的几种用法apply,call,prototype
- js中arguments,caller,callee,apply的用法小结
- C语言socket send()数据缓存问题
- Cocos2d-x 2.0 按键加速处理深入分析
- SSH和SMB的使用
- iOS开发 -- 分析CrashLog (3) Hopper逆向分析
- C#——抽象类和接口
- js中apply的用法(转)
- JAX-WS - 通过xjc命令把Schema生成Java
- hdu Tian Ji -- The Horse Racing
- server Library [Apache Tomcat v6.0](unbound)
- 查看Oracle中表的索引是否存在
- 【草莓音乐节】现场美女大放送
- 网站如何获得高质量外链资源
- python 网络爬虫
- How to Setup and Secure Linux SSH Logins to use Private PEM Keys