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的值

  • 相关阅读:
    分母为0一定会抛异常吗?
    [译]Zookeeper的优点与局限性
    明明有class为什么还是报ClassNotFoundException?
    广告倒排索引架构与优化
    KafkaProducer源码分析
    Kafka服务端之网络连接源码分析
    Sublime常用快捷键
    sublime主题设置
    Sublime前端插件
    安装软件,更新软件,删除软件
  • 原文地址:https://www.cnblogs.com/hhs6880/p/6638880.html
Copyright © 2011-2022 走看看