javascript关于自执行函数的this指向问题
varitem=10;vargame=(function(){varitem=5;varget=function(){returnthis.item;}vartest=f...
var item = 10;
var game = (function() {
var item = 5;
var get = function() {
return this.item;
}
var test = function() {
var finalResult = get();
alert(finalResult);
}
return {
get: get,
test: test
}
})();
game.test();// 10
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var item = 10;
var game = (function() {
var item = 5;
var get = function() {
alert(this.item);
}
return{
get:get
}
})()
game.get();// 结果为undefined
结果为什么是这样的?能否解答一下, 谢谢! 展开
var game = (function() {
var item = 5;
var get = function() {
return this.item;
}
var test = function() {
var finalResult = get();
alert(finalResult);
}
return {
get: get,
test: test
}
})();
game.test();// 10
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var item = 10;
var game = (function() {
var item = 5;
var get = function() {
alert(this.item);
}
return{
get:get
}
})()
game.get();// 结果为undefined
结果为什么是这样的?能否解答一下, 谢谢! 展开
1个回答
展开全部
<!DOCTYPE HTML>
<html>
<head>
<title>yugi</title>
<meta charset=UTF-8 />
<style type="text/css">
</style>
<script type="text/javascript" src="jquery-1.8.0.min.js">
</script>
<script type="text/javascript">
var item = 10;
var game = (function() {
var item = 5;
var get = function() {
// 这个this取决于哪个对象调用这个get方法。
return this.item;
}
var test = function() {
// 这个get方法是被window调用的,属于全局的item
// 等价于 window.get()
var finalResult = get();
console.debug (finalResult);
}
return {
get: get,
test: test
}
})();
console.error (game);
// 通过调用test方法,但是test方法里面并没有声明this,故而为window,就是全局的调用,所以就是那个外面的item
game.test(); // 10
// game对象调用get方法,this就是game,但是返回的是 {get:get,test:test},并没有所谓的item,故而为undefined
game.get();
//----------------------------------
var item = 10;
var game = (function() {
var item = 5;
var get = function() {
// 哪个调用get方法,this就是哪个
console.log (this.item);
// 全局的item
console.log (window.item);
// 默认局部变量
console.log (item);
}
return {
get: get
}
})()
console.warn (game);
// 同理,game就是{get:get},没有所谓的item,但是get方法里面是this调用,所以就是undefined
game.get(); // 结果为undefined
// 回答完毕,费心劳力,采纳即可。。。。。。。。!!!!!!!~~~~Void@@#####$$$$%%^&**(())
</script>
</head>
<body>
</body>
</html>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询