构造函数中 this 指向谁
在 javascript 中,使用 new 关键字调用构造函数时,this 指向新创建的对象实例。如果直接调用构造函数而不使用 new,this 将指向全局对象(在浏览器中为 window)或 undefined(严格模式下)。因此,构造函数的核心行为依赖于调用方式。

直接调用与 new 调用的区别
直接调用构造函数不会创建新对象,而是将属性添加到当前执行上下文的全局对象上。相比之下,new 调用会隐式创建一个新对象,并将 this 绑定到该对象。这种差异导致两种调用方式产生完全不同的结果。

function Person(name) { this.name = name; } // 直接调用 Person('Alice'); console.log(window.name); // 'Alice' // new 调用 const bob = new Person('Bob'); console.log(bob.name); // 'Bob'
构造函数返回值的处理
如果构造函数显式返回一个对象,new 表达式将忽略隐式创建的 this 对象,转而返回显式指定的对象。如果返回的是基本类型值,则忽略返回值,继续返回隐式创建的 this 对象。这一规则确保了构造函数的灵活性,同时保持了默认行为的稳定性。

function MyClass() { this.value = 10; return { value: 20 }; } const obj = new MyClass(); console.log(obj.value); // 20
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











