欢迎大家来到IT世界,在知识的湖畔探索吧!
概述
定义一个function, 然后使用call调用他
函数
当前函数.call(外部对象,参数1,参数2,...)
欢迎大家来到IT世界,在知识的湖畔探索吧!
通过call 将当前函数中的this, 改变成了外部对象了,从而可以使用外部对象。
例: 定义一个无参数的函数
欢迎大家来到IT世界,在知识的湖畔探索吧!function sayHello(){ console.log("do something"); }
调用这个函数,没有任何问题,输出 do something
sayHello();
使用call进行调用,没有任何问题,输出 do something
欢迎大家来到IT世界,在知识的湖畔探索吧!sayHello.call();
有参调用
function saveEntity3(email){ var userName = this.name; console.log("saveEntity3" + email); }
使用call进行调用的时候,第一个参数是对象,后面的其他参数
需要定义一个对象,方可进行传参
欢迎大家来到IT世界,在知识的湖畔探索吧! var user2 = { name:"小李", age:25 } 调用 saveEntity3.call(user2,'')
在saeEntity3中的this,从saveEntity3 被切换到了user2这个对象了。从而可以将外部的user2变成this了。通常用于外部的参数进行传递。
call的核心通过传递不同的对象改变了this的指向。
apply用法
call是顺序传
saveEntity3.call(user2,'')
apply使用数组传
欢迎大家来到IT世界,在知识的湖畔探索吧!saveEntity3.call(user2,[''])
bind用法
bind不会调用函数,会返回新的函数
var fun = saveEntity3.bind(user2,'') //调用 fun();
call与apply会调用函数,传参不一样
bind不会调用函数,形成新的一个函数 再进行调用。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/88754.html