<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>apply & call</title>
</head>
<body>
<div id="main" style="width: 200px; height:200px; background-color: #FF0000;"></div>
<script type="text/javascript">
function setStyle (attr, val) {
this.style[attr] = val;
}
var el = document.getElementById("main");
setStyle.apply(el, ["background-color", "#00FF00"]);
</script>
</body>
</html>
call 和 apply 用来改变函数运行时的context的上下文环境,也就是改变函数体中this的指向;
上面代码片段中默认情况下,setStyle函数中的this指向的window,
但是,在setStyle上应用apply 或 call 后,setStyle的上下文就变成了apply 或 call函数的第一个参数,及this指向了el。
call 和 apply 区别在于参数上,
call:
fun1.call (this, arg1, arg2 ...) { }
apply:
fun2.apply (this, [arg1, arg2, ...] ) {}