您的位置:首页 > Web前端 > JavaScript

js this

2016-03-01 10:33 513 查看
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>this关键字</title>
</head>
<body>
<script>
//window是js中的全局对象,我们创建的变量实际上是给window添加属性
var zyn="我是全局变量";
alert(window.zyn);
alert(zyn);

function a(){
var user = "zyn";
console.log(this.user); //undefined
console.log(this); //Window
}
a();//相当于 window.a();
var o = {
user:"zyn",
fn:function(){
console.log(this.user); //zyn
}
}
window.o.fn()//相当于o.fn();

var foo = "window";
var obj = {
foo : "obj",
getFoo : function(){
console.log("-1-->>"+this.foo);//obj
return function(){
console.log("-2-->>"+this.foo);//输出两次windows
return this.foo;
};
}
};
var f = obj.getFoo();
f(); //window f() 执行的是getFoo的内部函数 因为f() 指向的是window 所以内部函数的this指向的就是window
console.log("- f()-->>"+ f());

var foo = "window";
var obj = {
foo : "obj",
getFoo : function(){
var that = this;//将内部的this指向赋值到that,然后 借用that的对象进行返回
console.log("-1-->>"+this);
return function(){
console.log("-2-->>"+that.foo);//输出两次windows
return that.foo;
};
}
};
var f = obj.getFoo();
f(); //obj
console.log("- f()-->>"+ f());
</script>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: