严格模式通过强化执行约束间接提升面向对象可靠性:强制new调用构造函数、禁止修改不可配置原型属性、解除arguments与形参隐式绑定、禁用with语句,从而保障原型链完整性与继承行为可预测性。

严格模式本身不改变原型链的结构或面向对象的基本机制,但它通过强化执行约束,间接影响原型继承、构造函数调用和 this 绑定等关键环节,使面向对象代码更可靠、更可预测。
阻止构造函数被误调用为普通函数
非严格模式下,若忘记用 new 调用构造函数(如 Foo() 而非 new Foo()),函数内部的 this 会默认指向全局对象(window 或 global),导致属性意外挂到全局,污染环境。
严格模式下,这种调用会使 this 为 undefined,对 this.x = val 的赋值直接抛出 TypeError: Cannot set property 'x' of undefined,从而立即暴露调用错误。
✅ 实际效果:强制开发者正确使用 new,避免因调用方式不当导致原型链未建立、实例属性丢失等问题。
禁止修改不可配置的原型属性
在原型链中,很多内置对象的原型属性(如 Object.prototype.toString)是不可配置(configurable: false)的。非严格模式下,对这类属性执行 delete 或重新赋值会静默失败;严格模式则明确报 TypeError。
例如:
"use strict";<br>delete Object.prototype.toString; // TypeError
✅ 实际效果:保护原型链完整性,防止因误删/覆盖关键方法(如 toString、hasOwnProperty)导致子对象继承行为异常。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
限制 arguments 与形参的隐式绑定,提升方法复用安全性
非严格模式中,arguments[0] 与第一个形参名保持“双向同步”——修改任一者,另一者也变。这在基于原型的方法复用(如借用父类方法)时容易引发意外副作用。
严格模式下,arguments 是纯只读快照,修改它不影响形参,反之亦然。同时 arguments.callee 和 arguments.caller 被禁用。
✅ 实际效果:让原型上定义的方法(如 Parent.prototype.init)在被子类借用时行为稳定,避免因 arguments 干扰导致 this 或参数逻辑错乱。
不支持 with 语句,避免原型查找被意外劫持
with 会临时将某个对象注入作用域链顶端,可能覆盖原型链上的同名属性访问路径。例如:
with (obj) { toString(); } 可能调用 obj.toString 而非原型链上的 Object.prototype.toString。
严格模式完全禁止 with,从语法层杜绝此类干扰。
✅ 实际效果:保障原型链上方法调用的确定性,尤其在封装继承工具函数(如 Object.create(prototype))时,避免运行时行为漂移。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










