You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两次console.log输出结果一致?JavaScript构造函数实例疑问

为啥这段代码输出sum{} sum{}?

先看你运行的代码:

function sum(){
  console.log(this);
}
 
var sum1= new sum();
console.log(sum1);

当用new关键字调用sum函数时,JavaScript会自动完成以下几个操作:

  • 先创建一个空的新对象,这个对象的原型会关联到sum.prototype;
  • 把这个新对象绑定为sum函数内部的this;
  • 执行sum函数里的代码——也就是console.log(this),这时打印的就是刚创建的那个新对象,也就是sum{};
  • 因为sum函数没有显式返回其他对象类型的值,所以new sum()会自动把这个新创建的对象返回,赋值给sum1。

说白了,两次打印的是同一个对象:第一次是在构造函数内部通过this访问并打印,第二次是直接打印接收了这个对象的变量sum1,所以结果自然都是sum{}。

内容的提问来源于stack exchange,提问作者RAJYAVARDHAN SINGH RATHORE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:20:14