zoukankan      html  css  js  c++  java
  • JavaScript 内部函数作用域问题及解决方法

    内部函数被调用时,this被绑定到全局对象,这是语言设计上的一个错误,若语言设计正确,当内部函数被调用时,this应该仍然绑定到外部函数的this变量。这个设计错误的后果是不能利用内部函数来帮助它完成工作,因为内部函数的this被banding了错误的值,所以不能共享该方法对对象的访问权。

    如:

    var value=20;//全局变量
    var MyObject={value:10}//MyObject内部变量
    MyObject.double=function(){
    
          var helper=function()//内部方法
        {
            alert(this.value);//显示20,而不是10
            //其他操作
        }
        helper();
    }
    MyObject.double();

    如果希望访问外部函数的this,可以传递一个作用域变量进去

    var value=20;//全局变量
    var MyObject={value:10}//MyObject内部变量
    MyObject.double=function(){
    
       var that=this;
          var helper=function()//内部方法
        {
            alert(that.value);//显示10
            //其他操作
        }
        helper();
    }
    MyObject.double();
  • 相关阅读:
    python二维数组切片
    [转载]MIPS常用指令及实例
    使用vim编程步骤
    数组指针和指针数组
    线程基础
    顶层const和底层const
    递归调用
    输出流
    C++代码规范
    I/O流
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2633850.html
Copyright © 2011-2022 走看看