展开

关键词

bind、call、apply

首先说下前两者的。call 和 apply 都是为了解决改变 this 的指向。作用都是相同的,只是传参的方式不同。 除了第一个参数外,call 可以接收一个参数列表,apply 只接受一个参数数组。 24) => a.fn(yck, 24) var result = context.fn(...args) 删除 fn delete context.fn return result}如何实现一个 apply

24620

js中call和apply

调用函数时, call和apply传递参数的方式不同以名为showHide的函数为例:function showHide(name1, name2){ if(this.parentNode.parentNode.querySelector this.querySelector(span).innerHTML = (点击折叠)+name1+,+name2; }}call可以按照顺序传递showHide.call(this, 桐人, 亚丝娜) apply 则是将参数放到一个数组, 统一传递showHide.apply(this, ) 用call和apply实现相同的折叠的Demo ? 就这样,掌握了十万三千本究极魔法书的少女与拥有抹杀一切奇迹的神上之手的少年,将面临一系列故事…… 小结:使用call和apply调用函数时, 往往需要传递一个this, 目的是确定被调用函数showHide

19630
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    call和 apply是什么

    apply方法: 语法:apply(thisObj,) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。

    15220

    call、apply和bind的

    call、apply和bind这三个方法经常使用,但是具体有什么呢?首先这三个方法的用法比较相似,但是作用,bind和前两者则完全不同。 call和apply是调用函数,bind却是返回一个新的函数。下面看一下MDN对三者的解释:call() 方法调用一个函数, 其具有一个指定的this值和分地提供的参数(参数的列表)。 那不同点呢,首先说一下call和apply的不同点。call和apply的不同点只有一点,那就是向函数传递参数的方式不同。 call是逐个的向函数传递参数,apply是通过将参数以数组的形式传递到函数中。 下面总结了call和apply的一些常用的地方。

    36420

    JavaScript之apply()和call()的

    我 在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示 例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享 apply和call的在哪里 2.        什么情况下用apply,什么情况下用call 3.         apply的其他巧妙用法(一般在什么情况下可以使用apply)我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用.         apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.   什么情况下用apply,什么情况下用call在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型,并且在调用 Person的时候参数的列表是对应一致的

    31970

    apply(), lapply(), sapply(), tapply()的

    1.apply()函数apply的输入为data.frame或matrix,输出为 vector, list or array。 apply(X, MARGIN, FUN) Here: -x: an array or matrix -MARGIN: take a value or range between 1 and 2 to define where to apply the function: -MARGIN=1: the manipulation is performed on rows -MARGIN=2: the manipulation columns -MARGIN=c(1,2)` the manipulation is performed on rows and columns -FUN: tells which function to apply 参考: https:www.guru99.comr-apply-sapply-tapply.html#2

    40930

    JavaScript中apply、call、bind的与用法

    语法:func.apply(thisArg, )1.2 Function.prototype.call()call() 方法调用一个函数, 其具有一个指定的this值和分地提供的参数(参数的列表)。 2.2 call 与apply方法的用法 ?结果相同,call()和apply(),第一个参数都是要绑定上下文,后面的参数是要传递给调用该方法的函数的。 bind方法与call、apply最大的不同就是前者返回一个绑定上下文的函数,而后两者是直接执行了函数。因此,以上代码也可以这样写:? 3.5 利用call和apply做继承?3.6 使用 log 代理 console.log ?4. 总结 (1).三者都可以改变函数的this对象指向。 (3).三者都可以传参,但是apply是数组,而call是有顺序的传入。(4).bind 是返回对应函数,便于稍后调用;apply 、call 则是立即执行 。5.

    27620

    JavaScript进阶教程(4)-函数内this指向解惑call(),apply(),bind()的

    哈哈);};fn();1.3 函数声明与函数表达式的函数声明必须有名字。函数声明会函数提升,在预解析阶段就已创建,声明前后都可以调用。函数表达式类似于变量赋值。 4.1 call,applycall() 方法调用一个函数, 其具有一个指定的 this 值和分地提供的参数(参数的列表)。 注意:call() 和 apply() 方法类似,只有一个,就是 call() 方法接受的是若干个参数的列表,而 apply() 方法接受的是一个包含多个参数的数组。 如果想使用的对象的方法,并且希望这个方法是当前对象的,就可以使用apply或者是call方法改变this的指向。 可以用来指定内部 this 的指向,然后生成一个改变了 this 指向的新的函数它和 call、apply 最大的是:bind 不会调用bind 支持传递参数,它的传参方式比较特殊,一共有两个位置可以传递

    20642

    Kotlin中标准函数run、with、let、also与apply的使用和详解

    这次我们就来聊一聊Kotlin的一些通用的扩展标准函数run,with,let,also和apply。 但是对于run,with,let,also和apply这五个函数他们的用法及其相似,以至于我们无法确定去选择使用哪一个。 来改善原有的方法创建一个Fragmentfun createInstance(args: Bundle) = MyFragment().apply { arguments = args }我们也能够通过 函数的链式调用创建Intentfun createIntent(intentData: String, intentAction: String) = Intent().apply { action = intentAction } .apply { data = Uri.parse(intentData) }如何选择使用 在这里我们通过一个树状图来看一下对着五个标准函数的,使用以及如何选取标准函数

    21110

    用故事讲技术:关于js apply、call、bind的,我们可以将call忘掉,只使用apply就足够了

    apply 与 call 的apply 方法调用一个具有给定 this 值的函数,以及作为一个数组,或类似数组对象提供的参数。 call 方法的作用和 apply 方法类似,就是 call 方法接受的是参数列表,而 apply 方法接受的是一个参数数组。 前面我们讲,apply 是给框架设计者使用,而 call 是给开发者使用的,主要是指 apply 传递的是数组,而 call 传递的是不定参数。 其实在开发中,无论是写框架,还是写业务,记住 apply 这一个方法就足够了。 这就相当于是 apply 的调用方式。

    25220

    和详解:js中call()和apply()的用法

    1、关于call()和apply()的疑点: apply和call的在哪里什么情况下用apply,什么情况下用callapply的其他巧妙用法(一般在什么情况下可以使用apply)2、语法和参数分析 :apply和call都能继承另外一个对象的方法和属性; Function.apply(obj,args)方法能接收两个参数obj:这个对象将代替Function类里this对象args:这个是数组,它将作为参数传给 Function(args-->arguments)call:和apply的意思一样,只不过是参数列表不一样.Function.call(obj,]]])obj:这个对象将代替Function类里this 对象 params:这个是一个参数列表3、call()和apply()示例展示*定义一个Person类* function Person(name,age) { this.name=name; this.age ,什么情况下用call使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型。

    8120

    Kotlin中let()with()run()apply()also()函数的使用方法与

    相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard...

    32120

    JavaScript基础:call,apply,bind详解,三者有何和联系

    apply是以a开头,它传给fun的参数是Array,也是以a开头的。 :call与apply的唯一传给fun的参数写法不同:apply是第2个参数,这个参数是一个数组:传给fun参数都写在数组中。call从第2~n的参数都是传给fun的。 callapply与bind的执行:callapply改变了函数的this上下文后马上执行该函数bind则是返回改变了上下文后的函数,不执行该函数返回值:callapply 返回fun的执行结果bind call、apply,该用哪个?、call,apply的效果完全一样,它们的也在于参数数量顺序确定就用call,参数数量顺序不确定的话就用apply。 考虑可读性:参数数量不多就用call,参数数量比较多的话,把参数整合成数组,使用apply。参数集合已经是一个数组的情况,用apply,比如上文的获取数组最大值最小值。

    21610

    apply家族函数和for循环还是有的(批量生存分析出图bug)

    最近整理我GitHub代码,发现了之前一个批量生存分析代码是有问题的,因为不同基因表达量分组后,没有道理所有基因出图的P值不变,更诡异的是,lapply内部变量不识,一定要外部变量。 经过在VIP群里的讨论,把apply替换为for就可以运行:rm(list = ls())library(survival)library(survminer)dat=data.frame(sample

    58630

    Js中的call vs apply vs bind及记忆方式

    apply()使用 apply, 你可以继承其他对象的方法:注意这里apply()的第一个参数是null,在非严格模式下,第一个参数为null或者undefined时会自动替换为指向全局对象,apply call()call()是apply()的一颗语法糖,作用和apply()一样,同样可实现继承,唯一的就在于call()接收的是参数列表,而apply()则接收参数数组。? bind()bind()的作用与call()和apply()一样,都是可以改变函数运行时上下文,是call()和apply()在调用函数之后会立即执行,而bind()方法调用并改变函数运行时上下文后 用apply()模拟实现bind():? ()都是用来改变函数执行时的上下文,可借助它们实现继承;call()和apply()唯一是参数不一样,call()是apply()的语法糖;bind()是返回一个新函数,供以后调用,而apply()

    38740

    js中call、apply、bind那些事

    、call、bind的和主要应用场景虽然网上有很多关于这方面的博客和文章,但还是决定写一篇自己对这方面知识的理解。 (animal)();啦啦啦,有木有很神奇,控制台输出了三次cat我们拿人的showName方法,并动态改变其上下文帮自己输出了信息,说到底就是实现了复用上面看起来三个函数的作用差不多,干的事几乎是一样的 所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差的..call、apply与bind的差call和apply改变了函数的this上下文后便执行该函数,而bind则是返回改变了上下文后的一个函数 call、apply他们俩之间的差在于参数的,call和aplly的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数 fn.call(obj, arg1, arg2, arg3...); fn.apply(obj, );应用知道了怎么使用和他们之间的,接下来我们来了解一下通过call、apply、bind的常见应用场景

    42160

    js中call、apply、bind那些事

    、call、bind的和主要应用场景虽然网上有很多关于这方面的博客和文章,但还是决定写一篇自己对这方面知识的理解。 showName方法,并动态改变其上下文帮自己输出了信息,说到底就是实现了复用上面看起来三个函数的作用差不多,干的事几乎是一样的,那为什么要存在3个家伙呢,留一个不就可以。 所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差的..call、apply与bind的差call和apply改变了函数的this上下文后便执行该函数,而bind则是返回改变了上下文后的一个函数 call、apply他们俩之间的差在于参数的,call和aplly的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数 ;fn.apply(obj, );应用知道了怎么使用和他们之间的,接下来我们来了解一下通过call、apply、bind的常见应用场景。

    51650

    call和apply

    首先个人感觉call和apply还是挺神奇的,简简单单就改变了this的作用域,下面我们来共同学习一下1.call和apply的语法(改变this的作用域,有点像冒充的感觉,例子如下)function.apply 吐泡泡); var person=new Object(); People.call(person ,啄木鸟,捉虫子); people1.paly(); person.paly() 代码基本没变,就是把apply 替换成了call,作用相同,两者最大就是传递参数的方式不同,通俗说call传递参数是直接用双引号,然后一个接着一个传递apply传递参数是通过一个数组的形式传递

    21830

    JavaScript:prototype&apply&call

    ligang);p1.Introduce();People.Run();p1.IntroduceChinese();二、定义类 JavaScript中的函数都是以值的形式出现的,方法和字段之间没有太大的 这往往不是我们希望的,特是父类的构造函数中有一些特殊操作的情况下。    五、call和apply方法call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的 ,而apply传的剩余值必须为数组。

    18321

    apply()、call()、bind()

    apply()、call()、bind()每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域 使用apply()、call()、bind()都能改变函数对象的this指向window.name = A; 挂载到window对象的namedocument.name = B; 挂载到document ; A 绑定window对象rollCall.sayName.bind(document)(); B 绑定document对象rollCall.sayName.bind(s)(); C 绑定自定义对象虽然 apply()、call()、bind()都能够达到改变this指针的目的,但是其使用还是有apply与call传参方式不同window.name = Teacher;var rollCall = { sayAllName: function(...args){ console.log(this.name); args.forEach((v) => console.log(v)); }} apply

    11720

    相关产品

    • 人工智能

      人工智能

      提供全球领先的人脸识别、文字识别、图像识别、语音技术、NLP、人工智能服务平台等多项人工智能技术。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券