首页 > 编程语言 >【JavaScript29】call和apply

【JavaScript29】call和apply

时间:2023-08-08 23:45:17浏览次数:38  
标签:console log JavaScript29 call var apply fn

  • 概率

    • 每个函数都包含两个非继承而来的方法:apply() 和 call()
    • call和apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性
  • 作用

    • call() 方法 和 apply() 方法的作用相同:改变this指向
  • 区别

    • call():第一个参数是this,其余参数都是直接传递给函数,传递时函数必须逐个列举出来
    • apply():传递给函数的是参数数组
  • 正常的函数调用是无法改变this指向的;通过call或者apply可以改变this指向

function fn(a, b){
    console.log(this);
    return a + b;
}

var obj = {name: "qiaofu"};

var ret = fn(1, 2); // 这种方式是无法改变this的
console.log(ret);

var ret1 = fn.call(obj, 1, 2); // 动态的调整函数的this指向.
console.log(ret1);

  • call与apply不同点,参数传值
function fn(a, b){
    console.log(this.name);
    return a + b;
}

var obj = {name: "盖伦"};

var ret1 = fn.call(obj, 1, 2);
console.log(ret1);

// apply和call的区别: apply在给函数传递参数的时候. 是一个整体(数组)传递
var ret2 = fn.apply(obj, [1, 2]);
console.log(ret2);

标签:console,log,JavaScript29,call,var,apply,fn
From: https://www.cnblogs.com/xwltest/p/17615709.html

相关文章

  • 前端学习笔记202306学习笔记第三十八天-手写call得实现1
      ......
  • 手写apply
     目录前言导语前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语apply使用编辑代码部分Function......
  • ret2syscall
    ret2syscall介绍解题老规矩,先用checksecret2syscall检查一下有做什么保护没有。Arch:i386-32-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXenabledPIE:NoPIE(0x8048000)可以看到开启了栈不可执行,部分随机地......
  • 手动封装callES6
     目录前言导语 代码部分总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语手动封装callES6......
  • 手动封装call
     目录前言导语代码封装部分验证总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语歌谣歌谣......
  • c++11 call_once & once_flag
    #include<iostream>#include<mutex>usingnamespacestd;voidonce_fun(std::once_flag&&flag){std::call_once(flag,[](){cout<<"messagefromoncefun"<<endl;});}voidonce_fun1(s......
  • 008、adb命令 (service call iphonesubinfo 15),获取手机号码
    获取手机号码命令, adb shell service call iphonesubinfo 15 如下:不同android版本15的数字不一样,可是是13或17等C:\Users\SZ-M1-BD-0080>adbshellservicecalliphonesubinfo15Result:Parcel(0x00000000:000000000000000e0038002b00310036'..............
  • reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IndexOutOfBoundsE
    生产环境好好的,突然前端请求全部跨域,请求500。gateway报错。reactor.core.Exceptions$ErrorCallbackNotImplemented:java.lang.IndexOutOfBoundsException:Index:0,Size:0。所有的接口都报。原因由于gateway也集成了springboot-admin,开启了应用程序的actuator端点,导致......
  • Android studio id 'org.jetbrains.kotlin.android' version '1.7.20' apply fals
    如何实现"Androidstudioid'org.jetbrains.kotlin.android'version'1.7.20'applyfalse"在Android开发中,AndroidStudio是一个常用的集成开发环境(IDE),用于开发Android应用程序。在AndroidStudio中,我们可以使用Kotlin作为一种更现代化的编程语言。本文将向刚入行的开发者介绍......
  • Kingbase8: was aborted: ERROR: sorry, too many global temporary relations in back
    额....今天踩了一个坑,找个半天找到的解决方法设置一个会话内最多允许的全局临时表数据和索引的最大文件数量,默认值为32,最小值为1,最大值为1024。这个文件数量并不是实际磁盘看到的文件数目,而是一些依附于这个表的扩展关系文件,比如索引、大对象等。一般情况下,一个全局临时表只会占......