首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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

    jscall、apply、bind那些事

    前言 回想起之前的一些面试,几乎每次都会问到一个js关于call、apply、bind的问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差别的.. call、apply与bind的差别 call和apply改变了函数的this上下文后便执行该函数,而bind...67,5,7,6,-8,687);Math.min.apply(Math, arr);Math.min.call(Math, 34,5,3,6,54,6,-67,5,7,6,-8,687); 将伪数组转化为数组 js...的伪数组(例如通过document.getElementsByTagName获取的元素)具有length属性,并且可以通过0、1、2…下标来访问其中的元素,但是没有Array的push、pop等方法...要往数组添加元素,可以直接用push方法, 1234567 var arr1 = [1,2,3];var arr2 = [4,5,6];[].push.apply(arr1, arr2);// arr1

    1.7K50

    jscall、apply、bind那些事

    前言 回想起之前的一些面试,几乎每次都会问到一个js关于call、apply、bind的问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...8,687); Math.min.apply(Math, arr); Math.min.call(Math, 34,5,3,6,54,6,-67,5,7,6,-8,687); 将伪数组转化为数组 js...的伪数组(例如通过document.getElementsByTagName获取的元素)具有length属性,并且可以通过0、1、2…下标来访问其中的元素,但是没有Array的push、pop等方法...Array.prototype.slice.call(arrayLike); 上面arr便是一个包含arrayLike元素的真正的数组啦( 注意数据结构必须是以数字为下标而且一定要有length属性 ) 数组追加 在js...要往数组添加元素,可以直接用push方法, var arr1 = [1,2,3]; var arr2 = [4,5,6]; [].push.apply(arr1, arr2);

    1.6K60

    JSbind、apply、call的理解

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

    95510

    JS 手写: call、apply、bind

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

    1.5K30

    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只会指向它外面最靠近它的对象。...可以向cally一样传参,例如: a.say.bind(b, '男', 'UNO')() // 但由于bind返回的仍然是一个函数,所以我们还可以在函数调用的时候再进行传参。

    1.2K20

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

    前言 js的call(), apply()和bind()是Function.prototype下的方法,都是用于改变函数运行时上下文,最终的返回值是你调用的方法的返回值,若该方法没有返回值,则返回undefined...bind() bind()的作用与call()和apply()一样,都是可以改变函数运行时上下文,区别是call()和apply()在调用函数之后会立即执行,而bind()方法调用并改变函数运行时上下文后...用apply()模拟实现bind(): ?...(); 总结 call()、apply()和bind()都是用来改变函数执行时的上下文,可借助它们实现继承;call()和apply()唯一区别是参数不一样,call()是apply()的语法糖;bind...我是怎么记的 apply是a开头跟array的a开头一致,所以apply的参数是数组的,其余两个call 和 bind的参数就不需要记忆了,都是多参数类型。

    1.5K40

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

    call 方法将一个函数的对象上下文从初始的上下文改变为由 thisArg 指定的新对象,如果没有提供 thisArg 参数,那么 Window对象被用作 thisArg; 将arg1等参数传递进fun函数,...; apply方法将一个函数的对象上下文从初始的上下文改变为由 thisArg 指定的新对象,如果没有提供 thisArg 参数,那么 Window对象被用作 thisArg; 将数组传递进fun函数,...特性: fun.bind(thisArg,arg1,arg2,…) 不会立即调用fun函数,会返回一个新的指定了this的函数; bind方法将一个函数的对象上下文从初始的上下文改变为由 thisArg...指定的新对象,如果没有提供 thisArg 参数,那么 Window对象被用作 thisArg; 将arg1等参数传递进fun函数。...获取数组的最大值与最小值: const arr = [1, 4, 7, -1]; Math.max.apply(Math, arr); // 7 Math.min.apply(Math, arr);

    1.1K30

    Javascriptbind详解

    先看一下bind是什么。从上面的React代码,可以看出bind执行后是函数,并且每个函数都可以执行调用它。 眼见为实,耳听为虚。...' console.log((function(){}).bind().length); // 0 由此可以得出结论2: 1、调用bind的函数的this指向bind()函数的第一个参数。...另外前不久写过一篇文章:面试官问:能否模拟实现JS的new操作符。简单摘要: new做了什么: 1.创建了一个全新的对象。...3、es5-shim源码模拟实现bind时用Function实现了length。 事实上,平时其实很少需要使用自己实现的投入到生成环境。但面试官通过这个面试题能考察很多知识。...文章的例子和测试代码放在githubbind模拟实现 github。bind模拟实现 预览地址 F12看控制台输出,结合source面板查看效果更佳。

    1.7K32

    我攻克的技术难题:JS改变this的指向:call()、apply()、bind()

    3种动态指定普通函数this的指向的方法:call()、apply()、bind() 在之前的学习,我发现在学习了很多JS方法后,却没有真正的应用起来或者是理解什么时候需要使用这些方法,导致自己很快就遗忘自己所学过的知识...所以在以后的笔记,我都会添加这些所学知识的应用场景。...目录⛳call()⛳apply()⛳bind()总结⛳call()语法 fun.apply(this.Arg, arg1, arg2, ...) this.Arg: 在fun函数运行时指定的this值arg1...(btn), 2000) //bind(btn) 等价于 bind(this) })总结call()、apply()、bind()都可以改变函数内部的this指向,但是call...传递参数aru1,aru2...形式 apply传递参数arg形式bind区别于其他两种,不会调用函数我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

    32132

    js原生函数之call和apply,bind

    js原生函数的call和apply都不陌生,这两个方法的作用相似,接受两类参数。 第一类是context(上下文),传入的参数作为执行函数的上下文,也是要传入的第一个参数。...说了call和apply,也是要介绍一下bind的。...bind方法用于明确指定调用 this 方法。在作用域方面,类似于 call 和 apply 。当你将一个对象绑定到一个函数的 this对象时,你就会用到 bind。...后来想到了bind,作为和call的对比也就加了进来,之前没想到bind除了thisArg外还可以继续接受其他参数,因为之前看别人写的bind方法模拟不是这样的, 原来我看到的别人写的bind实现原理代码是这样的...想不到最终收获的是bind

    89000
    领券