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

js call()、apply()、bind()用法区别

参数,那么 Window对象被用作 thisArg; 将arg1等参数传递进fun函数,返回fun函数返回值。...thisArg 参数,那么 Window对象被用作 thisArg; 将数组传递进fun函数,返回fun函数返回值。...() 语法: fun.bind(thisArg,[arg1,arg2,…]) fun: 表示一个函数 thisArg: this要指向对象,如果是null undefined,则指向window全局对象...特性: fun.bind(thisArg,arg1,arg2,…) 不会立即调用fun函数,会返回一个新指定了this函数; bind方法将一个函数对象上下文从初始上下文改变为由 thisArg...(obj, 1, 2); // 返回是一个新指定了this函数 newFun(); // 3 4. call()、apply()bind()应用 1. call() call 常用来继承,因为

1.1K30

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

jsthis指向问题及call,apply,bind区别# 1 this指向# 1.1 what is 'this'?...# 在 ECMAScript 5 ,函数内部存在两个特殊对象:arguments(一个类数组对象,包含调用函数时传入所有参数) this(本文将要讲)。...1.2 标准函数与箭头函数this指向# this在标准函数与箭头函数时会有两种不同类型指向行为。...: fun } obj.sayObj() // 3.当使用new关键字调用,这个时候最靠近this是new关键字实例化出来对象,所以下面这两句话this指向分别是creatPerson1对象creatPerson2...区别# 相同点: 都可以改变函数this指向 第一个参数为this将要指向对象,后续传参都是作为函数形参值 不同点: call后续传参是一个一个传,然后顺序对应;apply后续传参是以数组形式

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

    说下jsbind

    bind受体是对象,返回是个新函数。 我们知道this总是指向调用他对象。但是有时候我们希望‘固化’这个this。 也就是无论怎么调用这个返回函数都有同样this值。...这就是bind作用。 语法 fun.bind(thisArg[, arg1[, arg2[, ...]]]) 参数 thisArg 当绑定函数被调用时,该参数会作为原函数运行时 this 指向。...this将永久地被绑定到了bind第一个参数,无论这个函数是如何被调用。 arg1, arg2, ... 当绑定函数被调用时,这些参数将置于实参之前传递给被绑定方法。...返回值 返回由指定this值初始化参数改造原函数拷贝 例1 window.color = 'red'; var o = {color: 'blue'}; function sayColor(){...func2(); 例2 注意:bind只生效一次 function f(){ return this.a; } //this被固定到了传入对象上 var g = f.bind({a:"azerty

    2.2K10

    call、applybind区别

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

    74220

    JScall apply bind用法

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

    2.9K30

    call、apply、bind应用区别

    1. call( ) 面试中常问Js关于call、apply、bind问题,比如: 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply、call...、bind区别主要应用场景 首先,要明白这三个函数存在意义是什么?...② call、apply区别 他们俩之间差别在于参数区别,callapply第一个参数都是要改变上下文对象,而call从第二个参数开始以参数列表形式展现,apply则是把除了改变上下文对象参数放在一个数组里面作为它第二个参数...,dom节点, 函数参数arguments) js伪数组(例如通过document.getElementsByTagName获取元素、含有length属性对象)具有length属性,并且可以通过...8下就只能通过循环一个个加到数组中了: for (var i = 0; i < oLis.length; i++) { ary[ary.length] = oLis[i]; } 基于IE6~8标准浏览器区别

    38150

    JSbind、apply、call理解

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

    96210

    jscallapply区别

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

    1.8K30

    JSisPrototypeOf hasOwnProperty 区别

    1、isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2原型链,是则返回true,否则返回false。 ...如果 object2 原型链包含object1,那么 isPrototypeOf 方法返回 true。 ...如果 object2 不是一个对象或者 object1 没有出现在 object2 原型链,isPrototypeOf 方法将返回 false。 ...2、hasOwnProperty  hasOwnProperty判断一个对象是否有名称属性或对象,此方法无法检查该对象原型链是否具有该属性,该属性必须是对象本身一个成员。 ...如果该属性或者方法是该 对象自身定义而不是器原型链定义 则返回true;否则返回false;  格式如下:  object.hasOwnProperty(proName);  判断proName名称是不是

    92840

    jQueryon()、bind()、live()、delegate()之间区别

    jQuery.on()、.bind()、.live().delegate()之间区别并非总是那么明显,然而,如果我们对所有的不同之处都有清晰理解的话,那么这将会有助于我们编写出更加简洁代码,...click事件接着会向树根方向传播,广播到父元素,然后接着是每个祖先元素,只要是它某个后代元素上单击事件被触发,事件就会传给它。 ? 在操纵DOM语境,document是根节点。...现在我们可以较容易地说明.on()、.bind()、.live().delegate()不同之处了。...接下来就详细说下几者之间区别: 1 .bind() .bind()是直接绑定在元素上,也很好解决了浏览器在事件处理兼容问题。....bind()相比时候有一个好处就是我们不需要在每个元素上再去绑定事件,而只在document上绑定一次就可以了。尽管这个不是最快方式,但是确实是最少浪费

    1.2K30
    领券