在javascript中,function里this的指向是怎样的?

2025-04-08 20:46:42
推荐回答(2个)
回答1:

Javascript中一个函数的this关键字的行为相对其它语言有些不同。在严格模式和非严格模式间也有区别。
在大多数情况下,this的值由函数如何调用来决定。this值不能在函数执行过程中赋值设置,并且每次函数调用时this值可能也不相同。ES5通过添加bind方法设置函数的this值,无论函数如何被调用。(this值永久不变)
全局上下文中:
    全局执行环境中(函数外部),无论在与不在严格模式下this指向全局对象。
    console.log(this.document === document); //true
    //在web浏览器中,window对象即是全局对象:
    console.log(this === window); // true
    this.a=37;
    console.logn(window.a); //37
    function上下文
    在函数内部,this值依赖于函数如何调用。
简单调用:
    function f2(){
        "use strict";//使用严格模式
        return this;
    }
    f2() === undefined;

回答2:

在js中,调用function的apply()或者call()可以覆盖this原先的指向。但是call()和apply()的用法略有不同;
用apply()时,参数需要用Array;
JavaScript有一套完全不同于其它语言的对this的处理机制。