关于js作用域问题

Posted G先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于js作用域问题相关的知识,希望对你有一定的参考价值。

补充:

function Foo(name,age){
    this.name=name;
    this.age=age;
    this.getName=function(){
        console.log(this);
    }
        
}

obj = new Foo("文州",19)
obj.getName()    
//这里把Foo看成类,大写是类,首字母小写是函数


function test(){
    console.log(this);
}

test()=== window.test()
//函数执行相当于window.test().所以打印的this是window对象。

(function(){
    console.log(this)
})()

这个叫自执行函数。this指的还是window。




题目0
var name="女神"
function Foo(name,age){
    this.name=name;
    this.age=age;
    this.getName=function(){
        console.log(this);
        
        (function(){
            console.log(this.name)   //自执行函数里面是window对象
        })()
    }
}

obj = new Foo("文州",19)
obj.getName() 
第一次打印文州,第二次打印女神



想要都打印文州的话
题目1
var name="女神"
function Foo(name,age){
    this.name=name;
    this.age=age;
    this.getName=function(){
        console.log(this);
        var that =this    //把当前环境的this赋值给that.那么这样2个都打印文州
        (function(){
            console.log(that.name)   
        })()
    }
}

obj = new Foo("文州",19)
obj.getName() 

//这样2个都执行文州。

题目2
var name="女神" obj={ name:‘文州‘, age:19, getName:function(){ console.log(this); var that =this (function(){ console.log(that.name) })() } } obj.getName() //这个结果和上面的一样。只是(对象)的声明方式改变了而已。

 




以上是关于关于js作用域问题的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

js 关于闭包的小总结

JS---闭包

关于 js 的作用域的对话过程的理解

#导入MD文档图片#关于JS中的作用域中的沉思

关于js的作用域,自我认知