javascript关于函数的调用者。
巴扎黑
巴扎黑 2017-04-10 16:44:47
[JavaScript讨论组]

声明一个普通函数:

function foo() {
    console.log('foo is executing');
}

// 如果不显示的声明函数的调用者,为什么缺省情况下调用者会是window,有什么出处么。
foo();
巴扎黑
巴扎黑

全部回复(4)
PHP中文网

在浏览器中,你的全局变量是window对象的属性,函数是window对象的方法

PHPz

这个JS引擎实现的规则喽~~

黄舟

(Execution Contexts)

巴扎黑

函数中的this就是函数的调用者

  1. 如果是通过对象的方法调用,即obj.method(params)这种形式的调用,this会被绑定成这个obj。

  2. 如果只是一个独立函数的调用,如你的例子,分为两种:

    2.1 一种是该函数为顶级函数(声明在全局作用域中的),于是该函数会成为该全局对象(window或者global)的一个同名属性,在非严格模式时method(params)的调用会变成`window.method(params)`或者`global.method(params)`,在严格模式中,method中的this会被绑定到`undefined`上.
    2.2 如果该函数不是顶级函数(在某函数中再声明的,成为一个局部函数), 则它的this在没有特别声明时,等同于包含它的函数的this。
  3. 特殊情况就是使用call, apply, bind函数来强制改变this的绑定。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号