欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js中的this对象运行实例讲解

程序员文章站 2022-05-17 23:48:18
this对象是运行时基于函数的执行环境绑定的; 在全局函数中: this等于window 当函数作为某个对象的方法调用时,this等于那个对象,不过匿名函数的执行环境具有全局性,因此this对象通常...

this对象是运行时基于函数的执行环境绑定的;

在全局函数中:

this等于window

当函数作为某个对象的方法调用时,this等于那个对象,不过匿名函数的执行环境具有全局性,因此this对象通常指向window。

var name=" the window"

var object={

     name:"my object"

     getnamefunc:function(){

       return function(){,

            return this.name

      };

  }

};

alert(object.getnamefunc()());//"the window"

结果是“the window”的原因是每个函数在被调用时都会自动取得两个特殊变量:this和argument。内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数的这两个变量。

解决办法一:把外部作用域中的this对象保存在一个闭包能够访问到的变量里,就可以让闭包访问该对象

getnamefunc:function(){

      var  that=this //定义一个that变量,将this对象赋值给that变量

       return function(){

            return this.name

      };

定义了闭包之后,闭包也可以访问这个变量,因为它是我们在包含函数中特意声明的一个变量。函数返回之后,that也仍然引用着object。

解决办法二:箭头函数

getnamefunc:function(){

            return ()=> this.name

        }

箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定