提问人:RAJYAVARDHAN SINGH RATHORE 提问时间:12/15/2022 最后编辑:DanielRAJYAVARDHAN SINGH RATHORE 更新时间:12/15/2022 访问量:40
为什么两个控制台 .log 都给出相同的输出 [重复]
why both the consoles.log are giving same output [duplicate]
问:
function sum(){
console.log(this);
}
var sum1= new sum();
console.log(sum1);
我得到 sum{} sum{} 作为输出,我对这个结果感到非常困惑
答:
1赞
Dan
12/15/2022
#1
你得到两个输出,因为关键字实际上执行了new
function sum()
查看新
运算符:
- 使用给定的参数执行构造函数,将 newInstance 绑定为 this 上下文(即 构造函数现在引用 newInstance)。
0赞
Daniel
12/15/2022
#2
当您创建函数时,它会创建自己的内部实例 (this
)
当您与函数一起使用时,它将返回此内部实例。new
以下示例说明了它是相同的实例,这就是控制台日志显示相同实例的原因。
function sum(){
this.a = 1
console.log(this);
}
var sum1 = new sum();
console.log(sum1);
请注意,如果您不使用行为更改。在本例中,是全局上下文,返回值(和第二个日志结果)是new
this
undefined
function sum(){
this.a = 1
console.log(this);
}
var sum1 = sum();
console.log(sum1);
据我所知,这个构造函数语法被引入到 JS 中,作为做类的一种方式,它充当类构造函数。以下是一些可能对 https://javascript.info/constructor-new#constructor-function 有所帮助的额外阅读材料
0赞
Daniel
12/15/2022
#3
在 JavaScript 中,函数可以用作构造函数。
例如,您可以定义构造函数:
function Cat(color) {
this.color = color
}
并将它们用作
const cat = new Cat("black");
所以:
在第一个示例中,您将其作为初始化对象的实例。您可以使用它来创建他的属性。如果使用关键字 ,则返回该对象。this
new
因此,在我的示例中,您将在构造函数中看到:
this = {} // before assignment
this = {color: "black"} // after line this.color = color
当你使用时,你会看到准备好的猫new
{color: "black"}
在某些浏览器中,您还会看到构造函数的名称。就我而言,在您的 .Cat
sum
请注意,使用大写字母作为构造函数的名称是约定的。您将看到 .在引擎盖下使用函数来定义构造函数的只是语法糖。class
评论
this