首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么使用和不使用"new“调用函数时,"this”的工作方式不同?

使用和不使用"new"调用函数时,"this"的工作方式不同的原因是因为在JavaScript中,"this"关键字的指向是动态的,它取决于函数的调用方式。

当使用"new"关键字调用函数时,会创建一个新的对象,并将该对象作为函数的上下文(也就是"this")来执行函数。这种方式被称为构造函数调用。在构造函数内部,可以使用"this"来引用新创建的对象,并将属性和方法添加到该对象上。

例如,假设有以下构造函数:

代码语言:txt
复制
function Person(name) {
  this.name = name;
}

var person = new Person("John");
console.log(person.name); // 输出 "John"

在上面的例子中,通过使用"new"关键字调用Person函数,创建了一个新的对象person,并将"name"属性添加到该对象上。

相反,当不使用"new"关键字调用函数时,函数的执行上下文(也就是"this")将取决于函数的调用位置。这种方式被称为普通函数调用。在普通函数调用中,"this"的默认指向是全局对象(在浏览器中是"window"对象)。

例如,考虑以下代码:

代码语言:txt
复制
function sayHello() {
  console.log(this);
}

sayHello(); // 输出全局对象(如window)

在上面的例子中,当使用普通函数调用方式调用sayHello函数时,"this"指向全局对象。

需要注意的是,使用"new"关键字调用函数时,函数内部的"this"指向新创建的对象;而不使用"new"关键字调用函数时,函数内部的"this"指向全局对象。这是因为"new"关键字会改变函数的执行上下文。

关于"this"的更多详细信息,可以参考腾讯云的文档:JavaScript中的this关键字

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

10分30秒

053.go的error入门

3分26秒

Go 语言揭秘:接口类型是 nil 但不等于 nil?

7分15秒

030.recover函数1

6分33秒

048.go的空接口

6分9秒

054.go创建error的四种方式

11分33秒

061.go数组的使用场景

1分10秒

DC电源模块宽电压输入和输出的问题

9分12秒

034.go的类型定义和类型别名

5分8秒

084.go的map定义

9分56秒

055.error的包装和拆解

7分31秒

人工智能强化学习玩转贪吃蛇

13分40秒

040.go的结构体的匿名嵌套

领券