主题:用最简单,通俗白话解说。
目标1:学好一个call小目标,另外2个旁通 so easy
正题入口:
作用1:call 函数的调用 意思是函数的方法 实践出真知:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>call、apply、bind八股文-白话文解释</title> </head> <body> <script> function tiger() { console.log('我是一只老虎 只吃肉') } //验证:函数的调用 输出我是一只老虎 只吃肉 tiger.call() </script> </body> </html>
输出:
作用2:改变this的身份 (斗转星移,移花接木) 实践出真知:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>call、apply、bind八股文-白话文解释</title> </head> <body> <script> function tiger() { console.log('我是谁', this) console.log('我是一只老虎 只吃肉,我的师傅是' + this.name) } function cat() { this.name = '猫' } //函数的调用 // 输出:我是一只老虎 只吃肉,我的师傅是 tiger.call() //作用2:改变this的指向和身份 (斗转星移,移花接木) // 输出:我是一只老虎 只吃肉,我的师傅是cat 说明tigger里面的this已经是cat tiger.call(cat) </script> </body> </html>
输出:
作用3:改变this的身份 (斗转星移,移花接木) 实践出真知:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>call、apply、bind八股文-白话文解释</title> </head> <body> <script> function tiger(par1) { console.log('我是一只老虎 只吃肉,我的师傅是' + this.name + '---参数:' + par1) } function cat() { this.name = '猫' } //作用3:第一个逗号后面是参数 // 输出:我是一只老虎 只吃肉,我的师傅是cat---参数:我是参数 tiger.call(cat, '我是参数') </script> </body> </html>
输出
问题1来了?
如果要传递第2个参数,甚至多个参数呢?
不买机关
tiger.call(cat, '我是参数',"参数2","参数3","参数4","参数N")
问题2来了?
如果参数很多,我想优雅更好的写法,聪明你在想有其他的办法呢,毕竟我们是有dream 、追求的人
不买机关 我的兄弟apply闪亮登场了,你看到我和call的区别了吗?
tiger.apply(cat, ['参数1', '参数2', '参数3', '参数4'])
百科:apply只接受2个参数
休息2分钟...........................
最后一个bind老表, 姗姗来迟上台,蓦然回首,bind却在灯火阑珊处,有了call,兄弟,怎么还有老表呢?。现在政策截止2025是开发3胎了。
言归正传:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>call、apply、bind八股文-白话文解释</title> </head> <body> <script> function tiger(par1) { console.log('我是一只老虎 只吃肉,我的师傅是' + this.name + '---参数:' + par1) } function cat() { this.name = '猫' } //tiger.call(cat, '参数1') 等价于 ,其他一模一样 var bindObj = tiger.bind(cat, '参数1') bindObj() </script> </body> </html>
专业术语:call是立即执行函数方法,bind先缓存起来(备用,备胎),待有需要用到在调用。
10分钟时间过完了,今天的故事白话文到此为止谢幕。下一站,下一篇在哪呢?
用通俗话记录通俗的语言,讲解内心的语言的故事,
如果对你有帮助,能加深你的理解,也证明我的描述语言组织表达及格。
标签:10,bind,cat,tiger,参数,apply,call From: https://www.cnblogs.com/y112102/p/18663583