JavaScript高级:函数定义与this指向详解
需积分: 0 196 浏览量
更新于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-12-03 上传
2020-10-27 上传
章满莫
- 粉丝: 35
- 资源: 316
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率