bind方法: 创建一个新函数,借用旧函数,并提前绑定this和参数值。
何时使用: 在创建方法时,就需要提前绑定this对象和参数值
如何使用: 2步:
1. 使用bind方法,基于现有函数创建新函数,并绑定this对象和部分参数值:
var newFun=fun.bind(obj[,参数1,参数2,...])
何时使用: 在创建方法时,就需要提前绑定this对象和参数值
如何使用: 2步:
1. 使用bind方法,基于现有函数创建新函数,并绑定this对象和部分参数值:
var newFun=fun.bind(obj[,参数1,参数2,...])
2. 调用newFun,传入剩余参数: newFun(剩余参数)
<span style="font-size:18px;"><!DOCTYPE html>
<head>
<meta charset="utf-8"/>
<title>css001</title>
</head>
<body>
<script>
var hmm={ename:"Han Mei",base:5000}
var lilei={ename:"Li Lei",base:4000}
function calc(base,bonus){//定义一个计算器
document.write(
"<h1>"+this.ename+":"+(base+bonus)+"</h1>"
);
}
calc.call(lilei,lilei.base,7000);
calc.call(hmm,hmm.base,5000);
//李蕾买了一个自己的计算器
var lilei_calc=calc.bind(lilei,lilei.base);//bind可以提前绑定对象和部分参数,写确定的参数
lilei_calc(4000);//this---李蕾
//被bind所占的计算器,别人就用不了了
lilei_cal.call(hmm,hmm.base,8000);
//笔试:
/*call vs apply vs bind
共同点:都是在调用时,动态指定函数中的this
不同点:
1.call,apply借用,临时绑定
2.bind 永久绑定
返回值:
1.call,apply不 创建 新函数,仅 调用 原函数
2.bind基于原函数,创建新函数对象
之后调用的其实是新函数对象
参数:
2,call,apply在调用的时候传入所有参数
call,要求独立传入每个参数
apply,要求将参数放入数组,统一传入
2,bind可在创建函数提前绑定部分参数
调用函数时,
严格模式:54-57的标题
比普通模式更严格的执行方式
*/
</script>
</body>
</html>
</span>