码迷,mamicode.com
首页 > Web开发 > 详细

关于js作用域问题

时间:2018-10-15 20:34:43      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:code   字母   结果   class   col   OLE   方式   首字母   作用域   

补充:

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作用域问题

标签:code   字母   结果   class   col   OLE   方式   首字母   作用域   

原文地址:https://www.cnblogs.com/geogre123/p/9792748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!