nodejs异步回调函数中this问题,求助

JavaScript021

nodejs异步回调函数中this问题,求助,第1张

this关键字指向调用它的对象,test()是在GLOBAL中调用,而且异步函数回调应该形成了闭包,回调函数中的this也应该指向GLOBAL对象,而至于为啥this.vall是undefined,则是因为用var申明的变量都是局部变量,并不是GLOBAL变量的属性。

好好去看看javascript中this关键字指的对象和闭包的概念吧。希望能帮到你

<!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>