首先是手写call函数,call函数第一个参数是this要指向的对象,第二及后面的参数就是原函数的参数Function.prototype.myCall=function(context,...args){ if(!typeof this==='function'){return;}//判断是否是函数调用 context=typeof context===...
原创
2021-09-03 13:42:01
259阅读
1、相同点 三个函数都是JS内置对象Function的方法,故所有的函数都可以调用这三个方法。 都可以改变this的指向。什么事this的指向呢,就是当调用这三个函数的时候将会把function原本的this指向认为设定的对象中。2、不同点是否会调用函数应用场景参数call()是实现继承第一个参数为指向的对象,第二个后面所有的参数传递给call()的调用者函数,传递方式是多个,以逗号分隔apply是求数组中的最大最小值第一个参数为指向的对象,第二个参数是
原创
2021-05-20 11:47:19
226阅读
用途:手动改变this的指向区别: 1 apply和call会使当前函数立即执行,bind会返回一个函数,后续需要时再调用2 call是apply的语法糖,只有传的参数不同,call中要传多个任意参数,apply只可以直接传数组或者类数组3 bind是为函数绑定一个this上下文规则: fn.apply(上下文环境,执行所需数组)fn.call(上下文环境,执行所需单个参数)
fn.bind(
转载
2023-06-08 15:08:33
57阅读
涉及面试题call,apply,bind函数内部实现是怎样的?考虑两点:第一个参数为undefined或null的时候,那么会转变为window改变了this执行,让新的对象可以执行该函数。callFunction.prototype.myCall = function(context) { if (typeof context === "undefined" || c...
原创
2021-11-19 13:53:09
341阅读
手写call、apply、bind函数 一、总结 一句话总结: 其实都不用记,用脑子去推就好了:核心点是为传进来的对象context添加fn这个函数属性,然后context就可以执行fn这个函数,也就是改变了fn的this指向 Function.prototype.myCall = function
转载
2020-03-20 07:33:00
146阅读
2评论
必备知识点:js 【详解】函数中的 this 指向_js function this-CSDN博客。
原创
2024-03-21 15:22:32
784阅读
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web 的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站。但真正大规模的使用 js 这还是第一次。我也是初生牛犊不怕虎,这次服务器居然抛弃 C++ 和 lua 的正统搭配,而尝试用 nodejs 来写游戏服务器,折腾的自己要死要活的我也是醉了。在给
推荐
原创
2015-02-27 21:16:39
10000+阅读
点赞
3评论
之所以要写这篇,是因为曾经面试被要求在白纸上手写bind实现
结果跟代码一样清晰明确,一阵懵逼,没写出来!
下面,撸起袖子就是干!~
把call、apply、bind一条龙都整一遍!~~
call
定义与使用
Function.prototype.call(): https://developer.mozilla.org/zh-CN/docs/Web/JavaScr
转载
2021-06-17 10:07:53
548阅读
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站。但真正大规模的使用 js 这还是第一次。我也是初生牛犊不怕虎,这次服务器
原创
2015-12-25 16:13:24
755阅读
call 调用 apply 应用 bind 关联,绑定 call(),apply(),bind()都是用来重定义this这个对象的 使用call()(或apply())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。 每个函数都包含两个非继承而来的方法:apply()和call()。这两 ...
转载
2021-08-26 20:08:00
103阅读
2评论
call()、apply()、bind() 都是用来重定义 this 这个对象的 call接收参数列表,apply接收数组参数,bind和call一样,但是返回值是函数需要再调用才执行 var f1 = function(a,b) { console.log(a+b); } var f2 = fun ...
转载
2021-08-10 15:30:00
155阅读
2评论
apply()、call()、bind() 每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。 使用 apply()、call()、bind()都能改变函数对象的this
原创
2022-05-28 00:56:03
95阅读
callcall和apply就是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。function a(name) { console.log(name, 111) console.log(this, 222) }a('fanfei')使用call改变this ...
原创
2021-11-19 13:48:02
125阅读
call 1调用函数 2改变函数内的this指向 3实现继承: 构造函数+ 原型对象--组合继承 var obj = { uname: 'lili' } function fn(a, b) { console.log(a + b); console.log(this); } fn.call(); / ...
转载
2021-09-22 21:35:00
101阅读
2评论
this、apply、call、bind
原创
2022-12-17 00:13:01
114阅读
一、作用call 、apply 、bind 作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向那么什么情况下需要改变this的指向呢?下面举个例子var name="lucy";
var obj={
name:"martin",
say:function () {
console.log(this.name);
原创
2024-06-11 09:45:24
43阅读
一、作用call 、apply 、bind 作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向那么什么情况下需要改变this的指向呢?下面举个例子var name="lucy";
var obj={
name:"martin",
say:function () {
console.log(this.name);
原创
2024-08-24 22:22:46
48阅读
非常好的一排文章跳转链接this指向问题,手写bind,apply,call
原创
2022-11-18 00:11:27
31阅读
avaScript权威指南上的解释是: call() 、apply()可以看作是某个对象的方法,通过调用方法
原创
2021-11-30 10:57:22
679阅读
1.作用:call、apply和bind是Function对象自带的三个方法,都是为了改变函数体内部this的指向,区别是call()和apply()在调用函数之后会立即执行,而bind()方法调用并改变函数运行时上下文后,返回一个新的函数,供我们需要时再调用。它们的第一个参数,都是指定一个运行时的上下文,也就是this的指向。bind,和call,指定this指向的参数后,可以加入多个参数,而a
原创
2019-05-19 00:35:00
959阅读