在js函数里面,你只能把“this”看做当前要服务的“这个”对象。并能完全的代表“自身”.看下面DMOE就可以理解为啥不能“完全自我”。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>警惕this陷阱</title>
</head>
<body>
<script type="text/javascript">
function wAlert() {
alert("I'm " + this.name + " of " + typeof (this));
}
//这时候的this是代表的window全局对象,其没有name这个属性,所以为空字符串。
wAlert();
var superMan = {name: "superMan"};
//把wAlert赋值给superMan的wAlert属性,这时superMan.wAlert()中的this就发生了变化,
//这时的this代表superMan对象,而superMan中有name属性,所以这时候弹出的结果就是
//I'm superMan of object
superMan.wAlert = wAlert;
superMan.wAlert();
//这时候的this是代表superMan
wAlert.apply(superMan);
//这时候的this是代表superMan
wAlert.call(superMan);
</script>
</body>
</html>