zoukankan      html  css  js  c++  java
  • 关于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() //这个结果和上面的一样。只是(对象)的声明方式改变了而已。

  • 相关阅读:
    FFOM_秒交易行
    FFOM_脚本源代码
    农药_挂周金币
    保存数据,父页面列表数据更新
    点击按钮不弹出新窗口
    GridView1_RowDeleting 弹出确认对话框
    判断复选框
    获取Guid
    2019 gplt团体程序设计天梯赛总结
    Codeforces Round #550 (Div. 3)E. Median String
  • 原文地址:https://www.cnblogs.com/geogre123/p/9792748.html
Copyright © 2011-2022 走看看