技术文摘
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语言特性的重要组成部分,掌握它能让开发者更好地驾驭这门语言。
- Go1.16 新特性:Go mod 的补救之法,仅需此招
- 浅析消息队列
- Scrapy 源码解析:Scrapy 的核心组件有哪些?
- 面试官:HTTPS 为何安全?
- HashMap 线程不安全究竟体现在何处
- 万字长文深度解读 Redisson 分布式锁源码
- 2021 已至,这 12 种 Numpy&Pandas 高效技巧你掌握了吗?
- C 语言实现 MD5 加密的简单之道
- Python 爬虫定位元素的四种常用方法对比,你更倾向哪种?
- 这个异步问题常见但鲜有人能解决
- JavaScript 的七种设计模式
- Python 揭秘:谁是 39 届央视春晚的常客?
- 苹果最新 AR/VR 头显专利:面垫旨在与用户面部舒适贴合
- Pythonic 风格代码的优势及 12 个实例解析
- Python 的 f-string 为何能连接字符串与数字