加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
05_Function扩展.html 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
wangjiahui.vendor 提交于 2023-06-11 20:53 . change directory
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>05_Function扩展</title>
</head>
<body>
<!--
1. Function.prototype.bind(obj) :
* 作用: 将函数内的this绑定为obj, 并将函数返回
2. 面试题: 区别bind()与call()和apply()?
* 都能指定函数中的this
* call()/apply()都是立即调用函数
* bind()则是将函数返回
3. 区别bind()和call()和apply()?
* 第一个参数都可以是null或undefined,在非严格模式下,第一个参数为null或undefined时会自动替换为全局对象。
* call()接收的是参数列表,而apply()则接收参数数组。
4. 如何选用:
* 如果不需要关心具体有多少参数传入函数,选用apply()
* 如果确定函数可接受多少参数,并且想一目了然表达形参和实参的对应关系,选用call()
* 不会立即调用当前的函数,而是将函数返回,则选用bind()
-->
<script type="text/javascript">
var obj={name:"独孤求败"}
function foo(age,name){
console.log(this,age,name);//Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …} undefined undefined
}
foo();
// 传入参数的形式
foo.apply(undefined,[30,'凌雪鸦']);//Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …} 30 "凌雪鸦"
foo.call(null,40,'殇不患');//Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …} 40 "殇不患"
// bind不会立即调用当前的函数,而是将函数返回
// 如何需要执行的话,必须在后加上()调用
foo.bind(obj,20,obj.name)();//{name: "独孤求败"} 20 "独孤求败"
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化