代码拉取完成,页面将自动刷新
<!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>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。