作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri…
JavaScript中,我们希望别人无法修改我们创建的对象.比如,代码库的作者很可能想锁定核心库的某些部分来保证它们不被意外地修改.ES5中引入了三种锁定修改的级别:防止扩展preventExtensions.密封seal.冻结frezze. 这三种级别逐渐增强.对于超过级别的行为,在非严格模式下将会悄无声息地失败,在严格模式下将会抛出一个错误.因此,建议使用严格模式,更加方便调试. 正常对象: 可以添加属性和方法,所有属性和方法可以被删除.修改. var person = { name: "N…