zoukankan      html  css  js  c++  java
  • js的apply方法使用详解,绝对NB

    情况1:

    作为函数调用

    var yazi={
        jiao:function(){
            var ji=function(){
                console.log(this);
            }
            ji();
        }
    }
    yazi.jiao();//window

    function jiao(){

      console.log(this);

    }

    jiao();//window

    当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的。在此种模式下,this被绑定为全局对象,在浏览器环境下就是window对象

    2.方法调用式

    var yazi={

      jiao:function(){

        console.log(this);

      }

    }

    yazi.jiao();//yazi

    当函数被保存为一个对象的属性时,它就可称为这个对象的方法。当一个方法被调用时,this被绑定到这个对象上。如调用表达式包含一个提取属性的动作

    3.构造函数式

    function person(){

        name:'hanhongshuai';

      sleep:function(){

        console.log(this.name);

      }

    }

    new person.sleep();

    如果在一个函数前面加上new关键字来调用,那么就会创建一个连接到该函数的prototype成员的新对象,同时,this会被绑定到这个新对象上

    4.apply,call方法模式:

    var yazi={

       shengyin:'嘎嘎';

       jiao:function(){

        console.log(this.shengyin);

      }

    }

    var ji={shengyin:'jiji';}

    yazi.jiao.call(ji);//jiji

    js中,函数也是对象,所有函数对象都有两个方法:apply和call,这两个方法可以让我们构建一个参数数组传递给调用函数,允许我们改变this的值

  • 相关阅读:
    db.Exec和db.Query的区别
    golang两种get请求获取携带参数的方式
    gin实现中间件middleware
    gin操作session
    笔札-有触动的句子
    并发的基本概念
    售货员的难题
    传球游戏之最小总代价
    状压dp入门
    [COCI 2010] OGRADA
  • 原文地址:https://www.cnblogs.com/hhs6880/p/6638880.html
Copyright © 2011-2022 走看看