muxrwc

厕所专栏

翻译 apply和call方法详细讲解收藏

新一篇: 当天是年,月的第几周。。。 | 旧一篇: JS模拟索引器。。。

<script type="text/javascript">
if ("function" != typeof Function.prototype.apply) {
//Meizz apply and call (梅老师写的兼容方法)
//如果浏览器版本过低不支持apply和call的话 - -!
    Function.prototype.apply = function (obj, argu) {
    //apply函数兼容
        var a = [], f = null, i = 0;
        if (argu && argu.constructor === Array) for (; i < argu.length ; i ++) a[i] = "argu[" + i + "]";
        //把这个被apply的函数追到自己的原型对象中,这样就调用一下这个函数,就可以实现继承里面所有的引用。
        if (obj) obj.constructor.prototype.___caller = this;
        f = eval((obj ? "obj.___caller" : "this") + "(" + a.join(",") + ");");
        //用完了,就删除掉它
        if (obj) delete obj.constructor.prototype.___caller;
        return f;
    };
    Function.prototype.call = function (obj) {
    //call函数兼容
        for (var a = [], i = 1 ; i < arguments.length ; i ++) a[i - 1] = arguments[i];
        return this.apply(obj, a);
    };
}
</script>

发表于 @ 2007年10月31日 12:48:00|评论(loading...)|编辑

新一篇: 当天是年,月的第几周。。。 | 旧一篇: JS模拟索引器。。。

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © muxrwc