首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jscall和apply

一、call和apply简介 call() 和 apply() 是预定义函数方法。 两个方法可用于调用函数,两个方法第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者区别在于第二个参数: apply传入是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call参数传入(从第二个参数开始)。...在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数值是 null 或 undefined, 它将使用全局对象替代。...二、call和apply相同点和不同点 1. 区别 call传递参数是序列1,2,3,4 apply传递参数是集合型[1,2,3,4] 2....console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3 } method.call(obj,1,2,3); 方法2:使用apply

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

    Js apply() call()使用详解

    Js apply方法详解 我在一开始看到javascript函数apply和call时,非常模糊,看也看不懂,最近在网上看到一些文章对apply方法和call一些示例,总算是看有点眉目了,在这里我做如下笔记...主要我是要解决一下几个问题: apply和call区别在哪里 什么情况下用apply,什么情况下用call apply其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply...和call定义,然后用示例来解释这两个方法意思和如何去用....call示例 在Studen函数里面可以将apply修改成如下: Person.call(this,name,age); 这样就ok了 3.什么情况下用apply,什么情况下用call 在给对象参数情况下...通常在什么情况下,可以使用apply类似Math.min等之类特殊用法: 一般在目标函数只需要n个参数列表,而不接收一个数组形式([param1[,param2[,…[,paramN]]]]),可以通过

    1.4K60

    划重点:jsthis、call、apply

    jsthis有4种指向,分别为: 作为对象方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象方法调用时...*/ 3、在构造器调用this 先要理解js构造器。...区别在于调用方法: 当函数名加括号调用时就是普通函数, 当用new运算符调用函数时就是构造函数,并且该构造函数调用时总是会返回一个对象,即实例对象,该构造函数this就是指向这个返回实例对象。...当使用apply或call时,如果传入第一个参数是null,则函数体内this会指向默认宿主对象,在浏览器中就是window,但在严格模式下,函数体内this还是为null: 1var func...延伸应用: 理解了this、call、apply后,在实际js开发,可以很方便实现对象继承 继承demo1: 1var Parent = function(){ 2 this.name

    96920

    jscall和apply区别

    call和apply实现相同折叠Demo ?...,并且在这个游戏中GAME OVER的话,也就代表了现实世界“死亡”。...故事主角上条当麻是学园里一个无能力者,但并非完全没有能力,他能力是能够将一切异能之力无效化。他只有右手能够使用这种能力,还给自己这种连上帝奇迹都能抹杀能力取名为“幻想杀手”。...某一个暑假日子,在家里阳台上,他遇见了一位修女;这位少女自称自己名字叫“茵蒂克丝”,并是从魔法世界逃了出来,现在正在被魔法师追赶。... 小结: 使用call和apply调用函数时, 往往需要传递一个this, 目的是确定被调用函数showHide运行时函数内部this指向, 以上面的demo为例, 如果调用函数

    1.8K30

    JScall apply bind用法

    谁调用当前属性或者方法,它就是谁 /* 2.1.bind方法作用 修改函数或者方法this为指定对象, 并且会返回一个修改之后新函数给我们 注意点...: bind方法除了可以修改this以外, 还可以传递参数, 只不过参数必须写在this对象后面 */ //call apply bind修改this.../*call:修改函数或者方法this为指定对象, 并且会立即调用修改之后函数 注意点: call方法除了可以修改this以外, 还可以传递参数, */.../*apply:修改函数或者方法this为指定对象, 并且会立即调用修改之后函数 注意点: apply方法除了可以修改this以外, 还可以传递参数, 只不过参数必须通过数组方式传递...test(10,20); window.test(); let fn=test.bind(obj,10,20); fn(); test.call

    2.9K30

    JScall()和apply()方法

    JScall()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象一个方法,...alert(a-b); 8 } 9 10 add.call(sub,3,1); 这个例子意思就是用 add 来替换 sub,add.call(sub,3,1) == add...(3,1) ,所以运行结果为:alert(4); // 注意:js 函数其实是对象,函数名是对 Function 对象引用。...(this) 意思就是使用 Animal对象代替this对象,那么 Cat不就有Animal所有属性和方法了吗,Cat对象就能够直接调用Animal方法以及属性了....(this); 20 Class11.call(this); 21 } 很简单,使用两个 call 就实现多重继承了 当然,js继承还有其他方法,例如使用原型链,这个不属于本文范畴

    2.2K30

    JSbind、apply、call理解

    概要 call、apply、bind 都是用来修改函数this, 传参时,call是一个个传参,apply是数组形式传参,call和apply立即执行并且返回值是你调用方法返回值,若该方法没有返回值...bind是改变this后返回一个新函数,他不会立即执行。 这三个方法不会改变原方法this指向。 Bind 复制原方法传入新this指向后生成新方法,参数可传多个。..."); } }; let b = { name: "小红" }; a.play("小刚"); a.play.bind(b)("小刚"); 显示 小明和小刚一块玩 小红和小刚一块玩 Call...调用原方法传入新this指向,第一个参数为this指向对象,后面可传多个参数。...、apply、bind 是Function.prototype下方法,作用是执行一下目标函数,执行时顺便把目标函数this改一下,然后把结果输出,执行后,不会影响原函数this!

    94110

    jscall与apply用法

    前天去面试,有个gg问了一些js知识,其中有一道call与apply用法题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们作用都是将函数绑定到另外一个对象上去运行...调用call方法,第二个参数属于函数对象func2参数,因此alert(x)为第二个参数func2 二、call 继承用法与改进 js使用call模拟继承 测试代码: <!...(this);实例化时,被baseB成员member覆盖了,即extendAB成员member由baseA member赋值成了baseB member 当然,我们也可以对上面baseA代码稍作修改...,以区分baseBmember this.showSelfA = function() { window.alert(this.memberA);    // 显示memberA } }...继承改进(prototype) 以上模拟继承方法,仔细分析不是最好。 因为每次在函数(类)定义了成员方法,都会导致实例有副本,因此可以借助prototype原型,进行改进 改进举例如下: <!

    2.7K10

    jscall方法理解和思考

    最近接手前端工作,对当前项目中自制js框架下,js使用产生了非常多困惑.尤其是js类,对象,函数,this等等相互之间关系和转换,以前学过也忘得差不多了,现在基本相当于重新看. js函数有可以有好几种解释...(); console.log(u);//2.这个时候是当做user类 user.toString();//3.这个时候user是作为对象 ?...Function是个函数对象,也可以认为是个类,所有定义函数都是Function类对象,我定义user也是对象,并且可以调用Function里面的方法 user.call(xxx);当我使用user...调用call方法时,他是作为对象来使用,调用是Function类里面的call方法,这个方法作用是调用这个函数并且把传递进去参数覆盖函数里面的this .第一个参数是覆盖函数里面的this , 剩下参数是作为这个函数参数传进去...function user(name){ console.log('我被调用了,this被覆盖了',this,',参数传进来了',name); }; user.call({},'陶士涵');

    93730

    jscall、apply、bind那些事

    前言 回想起之前一些面试,几乎每次都会问到一个js关于call、apply、bind问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...fn.call(obj, arg1, arg2, arg3...); fn.apply(obj, [arg1, arg2, arg3...]); 应用 知道了怎么使用和他们之间区别,接下来我们来了解一下通过...,-67,5,7,6,-8,687); 将伪数组转化为数组 js伪数组(例如通过document.getElementsByTagName获取元素)具有length属性,并且可以通过0、1、2…下标来访问其中元素...我们可以利用call、apply来将其转化为真正数组这样便可以方便地使用数组方法了。...length属性 ) 数组追加 在js要往数组添加元素,可以直接用push方法, var arr1 = [1,2,3]; var arr2 = [4,5,6]; [].push.apply

    1.6K60

    jscall、apply、bind那些事

    前言 回想起之前一些面试,几乎每次都会问到一个js关于call、apply、bind问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply....]); 应用 知道了怎么使用和他们之间区别,接下来我们来了解一下通过call、apply、bind常见应用场景。...,-8,687); 将伪数组转化为数组 js伪数组(例如通过document.getElementsByTagName获取元素)具有length属性,并且可以通过0、1、2…下标来访问其中元素...我们可以利用call、apply来将其转化为真正数组这样便可以方便地使用数组方法了。...length属性 ) 数组追加 在js要往数组添加元素,可以直接用push方法, 1234567 var arr1 = [1,2,3];var arr2 = [4,5,6];[].push.apply

    1.7K50

    SQLexec和call使用

    今天在读取数据库时候,搞了一上午,遇到个坑,归根结底还是术业不精! 由于对执行命令 CALL和EXEC无知,数据库无知,以前学过,忘记了。 还得加强学习啊。...从开发小姐姐那儿得到是这么一句SQL语句(开发代码里面的如下): String spSQL = "{call DB***..balabalaTable}"; 是在之前我想开发要时候给我是这么个语句...} 就一句话: exec是sqlplus命令,只能在sqlplus(查了下 应该是 客户端操作)中使用call是sql命令,任何工具都可以使用,call必须有括号,即使没有参数。...而写在代码是下面这样: public static void getconnectionDB(String spSQL) throws SQLException, InstantiationException...DbUtils.close(csStmt); DbUtils.close(dbConn); } }在代码执行时: call DB***语句与正常SELECT DISTINCT

    2.9K80

    区别和详解:jscall()和apply()用法

    1、关于call()和apply()疑点: apply和call区别在哪里 什么情况下用apply,什么情况下用call apply其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...,这样就将属性创建到了student对象里面 4、 什么情况下用apply,什么情况下用call 使用apply情况:在给对象参数情况下,如果参数形式是数组时候,比如apply示例里面传递了参数...使用call情况: 如果我Person参数列表是这样(age,name),而Student参数列表是(name,age,grade),这样就可以用call来实现了,也就是直接指定参数列表对应值位置...(sub,3,1); 分析:这个例子意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 函数其实是对象...这样 Class2 就继承Class1了,Class1.call(this) 意思就是使用 Class1 对象代替this对象,那么 Class2 不就有Class1 所有属性和方法了吗,c2

    67020

    jsthis指向问题及call,apply,bind区别

    jsthis指向问题及call,apply,bind区别# 1 this指向# 1.1 what is 'this'?...ECMAScript 6 又新增了 new.target (检测这个函数是否使用了new关键字,如使用则将引用被调用构造函数,否则值为undefined)属性。...1.2 标准函数与箭头函数this指向# this在标准函数与箭头函数时会有两种不同类型指向行为。...: fun } obj.sayObj() // 3.当使用new关键字调用,这个时候最靠近this是new关键字实例化出来对象,所以下面这两句话this指向分别是creatPerson1对象和creatPerson2...例如: a.say.bind(b)('男', 'UNO') 运行结果如下: 3 小结# 关于this指向、call、apply、bind记录本篇就总结到这里,在日常使用脚手架、组件开发时可能会用地方比较少

    1.2K20

    python__call__,把类实例当函数使

    看django源码时,看到了这样一个用法,不知道是什么意思,于是查了下,发现这么个用法,直接把实例化后类当函数来使,果然是强悍函数式编程。...看一个小demo #coding=utf-8 class ImFunc(object): def __call__(self,words): print 'i say %s'...#把类当函数使 在Djangotemplateloader.py,就是使用了这个方法,部分代码: class BaseLoader(object): is_usable = False...def __init__(self, *args, **kwargs): pass def __call__(self, template_name, template_dirs...看其作用应该就是省去了调用时写load_template这个方法了,另外一个作用就是如果BaseLoader内部代码发生变化,外部调用代码不需要改变。 还有其他用处吗?

    1.7K20
    领券