JavaScript高级:函数定义与this指向详解
需积分: 0 136 浏览量
更新于2024-08-05
收藏 401KB PDF 举报
在本篇JavaScript高级第03天笔记中,主要讨论了函数的定义与调用,以及`this`关键字的指向。内容包括三种函数定义方式:函数声明、函数表达式和`newFunction()`方法。其中,函数声明(通过`function`关键字)和函数表达式(匿名函数)是最常用的方式,而`newFunction()`由于执行效率低且书写不便,较少被采用。
1. **函数定义**
- **函数声明方式**:使用`function`关键字创建命名函数,如`function fn() { ... }`,便于识别和复用。
- **函数表达式**:匿名函数,如`var f = function(a, b) { console.log(a + b); }`,在赋值时定义,没有明确的名字。
- **`newFunction()`方法**:创建函数的一种特殊形式,但不推荐,因为它会导致`this`指向问题,并且不如其他方式灵活。
2. **函数调用**
- **普通函数**:直接调用如`fn();`,`this`指向全局对象或当前上下文。
- **对象方法**:作为对象属性调用,如`o.sayHi();`,`this`指向调用该方法的对象。
- **构造函数**:通过`new`关键字创建新实例时,`this`指向新创建的对象。
- **事件绑定**:通过`onclick`属性绑定,如`btn.onclick = function() {...};`,`this`指向触发事件的元素。
- **定时器函数**:`setInterval`中的函数,每秒执行一次,`this`取决于全局或上下文环境。
3. **`this`的指向**
- **函数内部**:默认情况下,`this`指向调用函数的对象。在不同场景下,`this`的指向可能会发生变化:
- 普通函数调用时,`this`指向全局对象或当前上下文。
- 对象方法中,`this`指向调用该方法的对象。
- 构造函数中,`this`用于创建新的对象实例。
- 事件处理函数中,`this`指向触发事件的元素。
- 定时器函数中,可能根据上下文不同而变化。
4. **改变`this`指向**
- **`call()`方法**:接收一个目标对象作为第一个参数,强制将`this`指向该对象,常用于继承场景。
- **`apply()`方法**:类似`call()`,但接受一个数组作为参数,用于处理数组方法的多参数调用,`this`指向数组的第一个元素。
通过理解和掌握这些概念,可以更好地编写JavaScript代码,控制函数行为和`this`的指向,以适应各种编程需求。
2022-08-03 上传
2019-04-19 上传
2022-08-03 上传
2022-08-03 上传
2021-04-28 上传
2021-01-20 上传
2021-03-23 上传
2020-10-27 上传
2020-12-03 上传
章满莫
- 粉丝: 35
- 资源: 316
最新资源
- 开源通讯录备份系统项目,易于复刻与扩展
- 探索NX二次开发:UF_DRF_ask_id_symbol_geometry函数详解
- Vuex使用教程:详细资料包解析与实践
- 汉印A300蓝牙打印机安卓App开发教程与资源
- kkFileView 4.4.0-beta版:Windows下的解压缩文件预览器
- ChatGPT对战Bard:一场AI的深度测评与比较
- 稳定版MySQL连接Java的驱动包MySQL Connector/J 5.1.38发布
- Zabbix监控系统离线安装包下载指南
- JavaScript Promise代码解析与应用
- 基于JAVA和SQL的离散数学题库管理系统开发与应用
- 竞赛项目申报系统:SpringBoot与Vue.js结合毕业设计
- JAVA+SQL打造离散数学题库管理系统:源代码与文档全览
- C#代码实现装箱与转换的详细解析
- 利用ChatGPT深入了解行业的快速方法论
- C语言链表操作实战解析与代码示例
- 大学生选修选课系统设计与实现:源码及数据库架构