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

jscall与apply用法

前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们的作用都是将函数绑定到另外一个对象上去运行...两者的格式和参数定义: call( thisArg [,arg1,arg2,… ] );       // 参数列表,arg1,arg2,... apply(thisArg [,argArray]...因此this.value为this.a,即func 6、函数func2调用call方法,第二个参数属于函数对象func2的参数,因此alert(x)为第二个参数func2 二、call 继承用法与改进 js...: function baseA() // base Class A { this.memberA = "baseA member";   // member改成memberA,以区分baseB的...因为每次在函数(类)定义了成员方法,都会导致实例有副本,因此可以借助prototype原型,进行改进 改进举例如下: <!

2.7K10

js的call和apply

一、call和apply简介 call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。...二、call和apply的相同点和不同点 1. 区别 call传递的参数是序列1,2,3,4 apply传递的参数是集合型[1,2,3,4] 2....相同点 call和apply是替换前面函数内部的this指针以及传递参数。 功能:可以自动执行前面的函数 都有两个参数:a. 替换的对象 b....function method(a,b,c){ console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3 } method.apply

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

JScall apply bind的用法

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

2.9K30

jscall和apply的区别

则是将参数放到一个数组, 统一传递showHide.apply(this, ['上条', '御坂']) 用call和apply实现相同的折叠的Demo ?...身为VRMMORPG(虚拟大规模线上角色扮演游戏)《刀剑神域〈SAO〉》的其中一名玩家:桐人和其他一万个玩家才刚登入享受此游戏之时,游戏中的管理员对大家宣布了一个令人惊恐的消息── 那就是,现在唯一要登出此游戏的方法只有将这个游戏破关...,并且在这个游戏中GAME OVER的话,也就代表了现实世界的“死亡”。.../image/jinshu.jpg"> 故事讲述的是从东京都西部被分割出来的这座都市,“超能力开发”被列为学校课程的一部分...某一个暑假的日子,在家里的阳台上,他遇见了一位修女;这位少女自称自己的名字叫“茵蒂克丝”,并是从魔法的世界逃了出来,现在正在被魔法师追赶

1.8K30

划重点:js的this、call、apply

jsthis有4种指向,分别为: 作为对象的方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象的方法调用时...this 先要理解js的构造器。...apply接收两个参数,第一个参数指定了调用apply的函数体内this对象的指向,第二个参数是一个带下标的集合,该集合可以是数组,也可以是类数组,apply方法把这个集合的所有元素作为参数依次传递给调用...; 当在Function.prototype.call或Function.prototype.apply情况下,前面调用apply或call的函数体内的this原有指向被更改为指向apply或call方法的第一个参数...延伸应用: 理解了this、call、apply后,在实际js开发,可以很方便的实现对象的继承 继承demo1: 1var Parent = function(){ 2 this.name

95020

JS的call()和apply()方法

JS的call()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,...apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。...add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 的函数其实是对象,函数名是对 Function 对象的引用...18 { 19 Class10.call(this); 20 Class11.call(this); 21 } 很简单,使用两个 call 就实现多重继承了 当然,js...说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments 还有 callee,caller

2.1K30

JS的bind、apply、call的理解

概要 call、apply、bind 都是用来修改函数的this, 传参时,call是一个个传参,apply是数组形式传参,call和apply立即执行并且返回值是你调用的方法的返回值,若该方法没有返回值...b = { name: "小红" }; a.play("小刚", "小李"); a.play.call(b, "小刚", "小李"); 显示 小明和小刚、小李一块玩 小红和小刚、小李一块玩 Apply..." + name1 + "、" + name2 + "一块玩"); } }; let b = { name: "小红" }; a.play("小刚", "小李"); a.play.apply...(b, ["小刚", "小李"]); 显示 小明和小刚、小李一块玩 小红和小刚、小李一块玩 结论: call、apply、bind 是Function.prototype下的方法,作用是执行一下目标函数...,执行时顺便把目标函数的this改一下,然后把结果输出,执行后,不会影响原函数的this!

92610

JS 手写: call、apply、bind

可以使用 call 来实现继承:写一个方法,然后让另外一个新的对象来继承它(而不是在新对象再写一次这个方法)。...# 示例 # 使用 call 方法调用父构造函数 在一个子构造函数,可以通过调用父构造函数的 call 方法来实现继承,类似于 Java 的写法。...使用 apply, 可以只写一次这个方法然后在另一个对象中继承它,而不用在新对象重复写该方法。 apply 与 call() 非常相似,不同之处在于提供参数的方式。...当使用 bind 在 setTimeout 创建一个函数(作为回调提供)时,作为 thisArg 传递的任何原始值都将转换为object。...当目标函数被调用时,被预置入绑定函数的参数列表的参数。 返回值 返回一个原函数的拷贝,并拥有指定的 this 值和初始参数。

1.5K30

Js apply() call()使用详解

Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记...主要我是要解决一下几个问题: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply...apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性....修改成如下: Person.call(this,name,age); 这样就ok了 3.什么情况下用apply,什么情况下用call 在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数...apply的方式巧妙地解决这个问题!

1.4K60

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

1、关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...,什么情况下用call 使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型。...add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); 分析:这个例子的意思就是用...add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 的函数其实是对象,函数名是对 Function 对象的引用...这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,那么 Class2 不就有Class1 的所有属性和方法了吗,c2

63220

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

jsthis指向问题及call,apply,bind的区别# 1 this指向# 1.1 what is 'this'?...# 在 ECMAScript 5 ,函数内部存在两个特殊的对象:arguments(一个类数组对象,包含调用函数时传入的所有参数) 和 this(本文将要讲的)。...1.2 标准函数与箭头函数的this指向# this在标准函数与箭头函数的时会有两种不同类型的指向行为。...1.2.1 标准函数的this指向# 在标准函数,this 指向的是把函数当成方法调用的上下文对象。也就是说在哪里调用的这个函数,那这个this只会指向它外面最靠近它的对象。...,解析的时候也是跟call一样顺序对应; call、apply没有返回值,而bind改变完this指向后会返回一个改变完this指向之后的原函数的拷贝 可以再次进行调用。

1.1K20

JS 的 call apply bind 方法

js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[,   [,.argN]]]]]...如果没设置严格模式 “use strict”  当thisObj 不存在或 为 undefined 或为 null 或为 this 时,则隐式地指向 全局对象(在浏览器即为 window) 第二个参数是一个个值...我们需要模拟一下 Function.prototype.Bind = function(context){ var self = this, // 获取到bind第二个参数(的所有参数...(context,args); }; }; 注2: Function.prototype的apply和call是在1999年发布的ECMA262 Edition3才加入的(1998年发布ECMA262...在此前的的浏览器如IE5.01(JScript 5.0)是没有apply和call的。因此也会带来一些兼容性问题。

1.5K30

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

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

1.4K40

想起温习一下JS的this apply call arguments

这一课对于所有的计算机专业的毕业生来说都可以自学,然而在最近的实践(带了两个实习生自学js),我发现他们在学习js的时候会被这几个问题困扰:this指向、arguments为什么不是Array、apply...写这篇文章是为了减少js新手被这几个问题困扰的时间,希望给js新手一点帮助。 this 指向当前对象,通常在对象的构造函数中使用,用来引用对象。...所以在需要范围arguments的一部分的时候,会联想到数组的slice,但是又不能直接用arguments.slice(0, 2),只能用Array.prototype.slice.apply(arguments...apply call (对象冒充) apply 应用某一对象的一个方法,用另一个对象替换当前对象。 call    调用一个对象的一个方法,以另一个对象替换当前对象。...(o1) var o2 = {     name : 'lufang' } f.apply(o2, [1, 2]) f.call(o2, "hello") 三个要数arguments最容易理解了,

680100
领券