zoukankan      html  css  js  c++  java
  • javascript

    关于 call  与   apply 区别 :

              call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值(该函数的参数),call与apply的不同就是call传的值可以是任意的,而apply传的剩余值必须为数组

    例如:function add(a, b) { return a + b; }

    function sub(a, b) { return a - b; }

    /*apply用法

    * var a1 = sub.apply(add, [4, 2]);

    *var a2= add.apply(sub, [4, 2]);  

    */

    var a1 = sub.call(add, 4, 2);

    var a2= add.call(sub, 4, 2);

    输出:a1=2  a2=6

    JS模仿继承

      function fun1() {

                this.a = 123;

            this.add = function () { return  this.a }

            }

            function fun2() {

                this.a = 6;

            }

            var f1=new fun1()

            var f2=new fun2()

            var a = f1.add.call(f2);  // a输出的是6

    这里就是把啊f1的方法拿给f2来使用,f2便可以使用f1中所有的方法,这不正是高级语言中继承的概念喽。当然根据综上可扩展出多继承,使用多个call便可以实现多继承

       function fun1() {

                this.add = function () { return this.a }

            }

            function fun2() {

       

                this.sub = function () { return this.a-this.b }

            }

            function fun3() {

                this.a = 10;

                this.b = 2;

                 fun1.call(this);

                fun2.call(this);

            }

            var f3 = new fun3()

            alert(f3.add());  // 8

            alert(f3.sub()); // 10

  • 相关阅读:
    链表 2.4
    链表 2.3
    链表 2.2
    链表 2.1
    数组与字符串 1.8
    数组与字符串 1.7
    数组与字符串 1.6
    CounterBreach安装测试的全部过程
    数据库管理软件 Navicat Premium12 破解步骤
    webgote的例子(6)SQL注入(盲注)
  • 原文地址:https://www.cnblogs.com/webph/p/5547162.html
Copyright © 2011-2022 走看看