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

如题所述

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;
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-04
在js中,调用function的apply()或者call()可以覆盖this原先的指向。但是call()和apply()的用法略有不同;
用apply()时,参数需要用Array;
JavaScript有一套完全不同于其它语言的对this的处理机制。本回答被网友采纳
相似回答