技术文摘
js里this的作用
2025-01-09 20:30:34 小编
js里this的作用
在JavaScript编程中,this是一个极为重要且灵活的关键字,它的指向取决于函数的调用方式,在不同的场景下有着不同的作用。
在全局作用域中,this指向全局对象。在浏览器环境里,全局对象就是window对象。例如,在浏览器的控制台输入this === window,会返回true。此时,如果在全局作用域定义变量,如var globalVar = 'hello';,其实相当于给window对象添加了一个属性window.globalVar。
函数作为对象的方法调用时,this指向调用该方法的对象。比如:
let person = {
name: 'John',
sayHello: function() {
console.log('Hello, I\'m'+ this.name);
}
};
person.sayHello();
这里sayHello方法中的this指向person对象,所以能正确输出Hello, I'm John。
当函数作为普通函数调用时,this在非严格模式下指向全局对象,在严格模式下指向undefined。例如:
function normalFunction() {
console.log(this);
}
normalFunction();
在非严格模式下,会输出window对象;若在函数定义前加上'use strict';开启严格模式,this将输出undefined。
使用构造函数创建对象时,this指向新创建的对象实例。例如:
function Car(model) {
this.model = model;
this.showModel = function() {
console.log('Model:'+ this.model);
};
}
let myCar = new Car('Toyota');
myCar.showModel();
在构造函数Car里,this指向新创建的myCar对象,所以能为其添加属性和方法。
this的指向还可以通过call、apply和bind方法来显式设置。比如:
let obj1 = { message: 'From obj1' };
let obj2 = { message: 'From obj2' };
function displayMessage() {
console.log(this.message);
}
displayMessage.call(obj1);
displayMessage.apply(obj2);
let newFunction = displayMessage.bind(obj1);
newFunction();
通过这些方法,可以灵活改变函数内部this的指向,满足各种复杂的编程需求。
深入理解JavaScript中this的作用,对于编写高效、灵活且正确的代码至关重要。它是JavaScript语言特性的重要组成部分,掌握它能让开发者更好地驾驭这门语言。
- 严选消息中心管理平台的建设实践
- 计算机中数值与字符串的二进制表示方法
- 高品质嵌入式软件的开发窍门
- Golang Net/Http 中的巧妙技巧
- Python 遍历 HTML 表及抓取表格数据的方法
- 醒醒,未来不再有 Go2 !
- 如何理解 AOP 思想
- 为何 Go 不支持 []T 向 []interface 转换
- SpringMVC 中 RequestMapping 的这些细节你是否使用过?
- Go 内存分配与逃逸分析实践总结
- Java 多线程学习小记,你掌握了吗?
- 类的加载方式,你掌握了吗?
- Pandas:数据分析与数据科学领域的热门 Python 库
- 2023 年八大 Web 开发趋势展望
- 你虽用过@Autowired ,但知晓其实现方式吗?