构造函数中的this默认绑定到新创建的实例对象上,前提是必须用new调用;若省略new,则非严格模式下this指向全局对象,严格模式下为undefined;new.target可检测调用方式;箭头函数不能作为构造函数使用。

构造函数里的 this 默认绑定到新创建的实例对象上,前提是必须用 new 调用。
new 调用时 this 自动指向新实例
当你用 new 操作符调用函数时,JavaScript 引擎会自动执行四步:创建空对象、将该对象作为 this 绑定到函数内部、继承构造函数的原型、最后返回这个对象(除非显式返回其他对象)。所以构造函数体内的 this 就是那个新对象。
-
function Person(name) { this.name = name; }→new Person('Alice')中的this就是新生成的Person实例 - 如果构造函数里写了
return,且返回的是对象,则this绑定依然发生,但最终返回的是你return的对象,不是默认实例
不加 new 调用时 this 指向全局或 undefined
如果忘记写 new,比如直接调用 Person('Alice'),那它就变成普通函数调用,this 不再指向实例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 非严格模式下,
this指向全局对象(浏览器中是window),容易污染全局 - 严格模式下,
this是undefined,赋值操作会报错(如this.name = name会抛出 TypeError)
可以用 new.target 检测是否被 new 调用
ES6 引入了 new.target,在函数内部判断是否通过 new 调用:
- 如果是
new Person(),new.target等于Person构造函数 - 如果是普通调用
Person(),new.target是undefined - 可用来主动报错或兜底处理:
if (!new.target) throw new Error('请用 new 调用')
箭头函数不能当构造函数
箭头函数没有自己的 this,也不支持 new 调用。试图用 new 调用箭头函数会直接抛出 TypeError。
- 箭头函数的
this继承自外层作用域,和调用方式无关 - 所以不要把箭头函数当作构造函数来用,哪怕它看起来像
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










