zoukankan      html  css  js  c++  java
  • Javascript中call和apply

    在上一章http://www.cnblogs.com/meiyh/p/6207671.html 我有提到javascript很重要的this关键字,现在我们结合这个关键字使用的下面的两个关键字:

    • call(对象,参数...)  
    • apply(对象,[参数])


    以上代码我们来改成call和apply写法:

            var a = { num: 4 };
            var b = { num: 8 };
            a.sum = function (count) {
                this.num += count;
                return this.num;
            };
             
            console.log(a.sum(3));//7
              
            console.log(a.sum.call(b, 1));//9
              
            console.log(a.sum.apply(b, [1]));//10

    所以call和apply可以指定传入的对象,这样相同的方法体可以被不同的对象所使用,从而使代码简洁优雅~

    而且不知道大家发现没有,一旦有了这种指定对象传入的用法可以偷用别人的方法,比如下面这个arguments本身没有shift方法,通过call 实现将对象换成arguments来调用.

           function Foo() {
                var s = Array.prototype.shift;
                console.log(s.call(arguments)); //1
            }
            Foo(1, 2, 3, 4);

    就像之前发现的,Javascript中的一个对象的方法只是作为属性附在对象上的函数。所以将一个对象上“偷”方法给另一个,只须将对象的this属性从“原对象”改成现在的“小偷”也就是当前调用的对象。这就完美实现了偷取方法为己所用,所以说Javascript

    可塑性极强。尔等还要继续体验它的强大使用技巧。

  • 相关阅读:
    Windows环境下 配置memcached (php)
    谈谈我是怎么学习PHP的(一)
    重编译Linux命令源代码
    php面向对象学习
    Windows文件系统漏洞
    十分钟能学会的框架,MVC+20个常用函数
    linux系统安装软件方法大全
    oracle基本操作
    MySQL的limit查询优化
    C# winform 可视化操作 Excel文件并读取数据
  • 原文地址:https://www.cnblogs.com/meiyh/p/6214635.html
Copyright © 2011-2022 走看看