理清作用域和事件循环的两个案例

function Foo() {
        getName = function() {
            console.log(1)
        }
        console.log(this)
        return this
    }

    Foo.getName = function name() {
        console.log(2)
    }

    Foo.prototype.getName = function() {
        console.log(3)
    }
    var getName = function name() {
        console.log(4)
    }

    function getName() {
        console.log(5)
    }
    // Foo.getName(); //2
    // getName() // 4
    // Foo().getName(); // 1
    // new Foo.getName(); //2
    // new Foo().getName(); //3
    // new new Foo().getName() // 3

    // start script
    // asyn1 start
    // asyn2
    // promise1
    // end script
    // asyn1 end
    // promise2
    // setTimeout

    async function asyn1() {
        console.log('asyn1 start')
        await asyn2()
        console.log('asyn1 end')
    }
    async function asyn2() {
        console.log('asyn2')
    }

    console.log('start script')

    setTimeout(() => {
        console.log('setTimeout')
    }, 0);
    asyn1()
    new Promise(function(resove) {
            console.log('promise1')
            resove()
            console.log('promise1---2')
        })
        .then(function name() {
            console.log('promise2')
        })

    console.log('end script')

猜你喜欢

转载自blog.csdn.net/ChasenZh/article/details/110729814