JavaScript中函数调用的四种模式及其this绑定优先级表

JavaScript函数调用有四种模式:1.方法调用时this指向调用对象;2.函数调用时非严格模式this为全局对象,严格模式为undefined;3.构造调用时this指向新实例;4.显式调用时通过call/apply/bind指定this。JavaScript中函数调用的四种模式JavaScript中函数的this值不是由函数定义决定的,而是由**调用方式**决定的。共存在四种标准调用模式,每种对应不同的this绑定规则:1. 方法调用模式(Method Invocation)当函数作为对象的属性被调用时,this指向该对象。const obj = { name: 'Alice', greet() { console.log(this.name); // 'Alice' }};obj.greet(); // this → obj2. 函数调用模式(Function Invocation)独立调用函数(非对象属性、非new、非call/apply/bind),在非严格模式下this指向全局对象(浏览器中为window),严格模式下为undefined。function foo() { console.log(this);}foo(); // 非严格:window;严格:undefined3. 构造器调用模式(Constructor Invocation)使用new关键字调用函数时,会创建新对象,this绑定到该新实例。function Person(name) { this.name = name;}const p = new Person('Bob'); // this → 新建的p实例4. 显式调用模式(Explicit Invocation)通过.call()、.apply()或.bind()手动指定this值。function log() { console.log(this.role);}const user = { role: 'admin' };log.call(user); // 'admin'log.apply(user); // 'admin'log.bind(user)(); // 'admin'this绑定优先级顺序当多种绑定方式共存时,this取值遵循明确的优先级,从高到低如下:new 绑定:使用new调用时,无论是否用bind预设过this,最终this都指向新创建的实例(bind返回的函数被new调用时,原绑定被忽略) 显式绑定:包括call、apply、bind。其中call/apply在运行时立即生效,bind生成永久绑定函数(但可被new覆盖) 隐式绑定(方法调用):对象.方法() 形式,this指向调用者对象。若存在多层嵌套(如obj.fn()),只看最直接的调用对象 默认绑定(函数调用):以上都不满足时触发。严格模式为undefined,非严格模式为全局对象注意:箭头函数不遵循上述任何规则------它没有自己的this,始终继承外层普通函数作用域的this值(词法绑定),因此不参与该优先级表。常见陷阱与验证技巧理解优先级的关键在于"谁最终执行了函数"以及"以什么方式执行"。可借助以下方式快速判断: Zeemo AI 一款专业的视频字幕制作和视频处理工具

相关推荐
旋生万物6 小时前
螺旋角分布的功率谱分析:多窗谱 + FDR 校正
开发语言·python
写后端的胖头鱼6 小时前
【高频面试题】FullText 全文索引(MySQL)
数据库·mysql·索引·全文索引
专业程序开发源6 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568036 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu6 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
路远的数据库笔记6 小时前
SQL Server迁移国产数据库怎么做?九套口岸库零停机割接实战
数据库·经验分享·sqlserver·dba
樱花落木兰6 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
wuyk5556 小时前
Python 网络爬虫入门到实战 第 04 章:请求头、UA 伪装、超时、异常处理、基础反爬绕过
开发语言·爬虫·python
kaiyou20266 小时前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
weixin_440730507 小时前
装饰器decorator总结(函数即是变量、高阶函数、嵌套函数、参数组)
python·装饰器