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

  • 相关阅读:
    OSCache使用指南
    sql性能优化浅谈
    Oracle SQL性能优化
    SQL性能优化
    Linux/Unix笔记本
    Linux/Unix笔记本
    LUOGU P3413 SAC#1
    poj 2393 Yogurt factory(贪心)
    poj 2431 Expedition (贪心)
    LUOGU P3161 [CQOI2012]模拟工厂 (贪心)
  • 原文地址:https://www.cnblogs.com/hhs6880/p/6638880.html
Copyright © 2011-2022 走看看