首页 > 其他分享 >apply()和call()

apply()和call()

时间:2023-05-19 15:46:20浏览次数:43  
标签:Function name call apply skill ProB ProA

apply()和call()二者都是用来改变上下文执行,只是传递的参数不一样

Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)apply是将args数组一个一个与Function类中的参数一一对应

 

Function.call(obj,[param1[,param2[,…[,paramN]]]])
obj:这个对象将代替Function类里this对象
params:这个是一个参数列表,Function类的参数一一对应

 

示例.ts

add(a, b) {
        return this + a + b;
    }
mutilAdd() { var param1 = 3; var param2 = 4; //将add中的上下文this变成了1 var res1 = this.add.call(1, param1, param2)//结果为8 var res2 = this.add.apply(1, [param1, param2])//结果为8 }

示例.js

function ProA(name, skill) {
    this.name = name;
    this.skill = skill;
    this.fn = function () {
        console.log("my name is " + this.name + ", my skills are " + this.skill);
        console.log(this)
    }
}

function ProB(name, skill) {
    console.log(this)
    //此处改动产生的效果为:
    //在ProB内,通过apply,执行,并改动ProA中的执行上下文(this),
    //及修改ProA的参数为ProB所接收的参数
    //那么在new调用ProB时,相当于调用了被修改了执行上下文和参数之后的ProA
    //ProB的this传入ProA后执行this相关的参数函数赋值,由于ProA中的this是ProB的所以ProB就拥有了参数name、skill和函数fn
    ProA.call(this, name, skill)
}
var A = new ProA("AAA", "sing");
A.fn(); //my name is AAA, my skills are sing
var B = new ProB("BBB", "dance");
B.fn();

 

参考:代码

 

标签:Function,name,call,apply,skill,ProB,ProA
From: https://www.cnblogs.com/sugarwxx/p/17415325.html

相关文章

  • call()与apply()的作用与区别
    1.概念每个函数都包含两个非继承而来的方法:apply()和call()。call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性;2.作用call()方法和apply()方法的作用相同:改变this指向。3.区别他们的区别在于接收参数的方式不同:call():第一个参数是this值没有变......
  • flvjs使用过程中报The play() request was interrupted by a call to pause()的原因和
    原因:从表层来看,它的原因是因为在播放出来视频之前就已经被调用了pause方法停止了。但是造成这个过程的真正原因是什么呢?资源加载不成功可能是你的接口写错了,导致没有资源,虽然这是一个很小的可能,但是千万不要忽视每一个小的点时机不对这个时候就是说可能你接口是对的,只是获取......
  • 深入理解之JavaScript之call, apply, bind方法
    在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数执行时的上下文,再具体一点就是改变函数运行时的this指向。Function.prototype.call()call()方法调用一个函数,其具有一个指定的this值和多个参数(参数的列表)。fun.call(thisArg,a......
  • 准确度(accuracy)、精确率(precision)、召回率(recall)、F1值
    前言准确度、精确率、召回率、F1值作为评估指标,经常用到分类效果的评测上。比较好理解的二分类问题,准确度评估预测正确的比例,精确率评估预测正例的查准率,召回率评估真实正例的查全率。如何把这些评估指标用到多分类上呢,比如有三个类别A、B、C,准确度好理解,只要关系是否预测正确即可......
  • 【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无
    Warning:Unexpectedcallto'log'onthecontextobjectafterfunctionexecutionhascompleted.Pleasecheckforasynchronouscallsthatarenotawaitedorcallsto'done'madebeforefunctionexecutioncompletes.Th......
  • C# Winform 界面操作异步回调 AsyncCallback
    usingSystem;usingSystem.Collections.Generic;usingSystem.Threading;usingSystem.Windows.Forms;namespaceWindowsFormsApp1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();m......
  • Traceback (most recent call last) File upload.py, line 47, in module with
    博客园图片上传bugPleaseinputfilepath:D:\桌面\工作区\Typora笔记\05-杂\Bug合集\由于找不到MSVCP110.dll,无法继续执行代码。重新安装程序可能会解决此问题.mdTraceback(mostrecentcalllast):File"upload.py",line47,inwithopen(md_path,encoding='utf-8')......
  • useCallback,useMemo, React.memo的区别
     同:useCallback,useMemo和React.memo是三个在React中用于优化性能的方法。它们的主要目标是避免不必要的重新渲染和计算。因为当一个组件的状态发生变化时,React会重新渲染整个组件树。用这三个hook和组件,可以提升性能。 异:下面从属性,接收参数,返回值,意义和案例等方面进行详细地......
  • 微信小程序 自定义组件 监听数据变化 出现异常 Maximum call stack size exceeded.
    代码调用处: 组件内部  本地调试无异常,发布之后出现此异常解决方法:监听属性steps的值变化时,调用处不能使用双向绑定,去掉steps的双向绑定即可,具体的原因未知(不知为啥本地调试不会抛异常) ......
  • atomically try catch and avoid throw exception
    #include<assert.h>#include<atomic>#include<chrono>#include<fstream>#include<iomanip>#include<iostream>#include<numeric>#include<thread>#include<unistd.h>#include<uuid/uuid.h>......