我是一个JS新手,正在看书JavaScript 模式为了理解。我可以看到的代码片段之一:
var myFunc = function param() {
...
...
};
myFunc.cache={};
这表明函数体之外的任何人都可以添加新属性。这不会破坏封装吗?如果程序的其他部分不断添加新属性,使我的对象创建变得庞大怎么办?如果有人删除/修改我定义的属性怎么办?
我不知道我称其为“问题”是否正确。但如果是的话,请提供一种方法来避免这种情况。
Thanks !
JavaScript 从来没有真正提供任何选项来保护您的对象,但从 ECMAScript 5 开始您现在可以freeze一个东西。
var o = { a: 1, b: 2 };
Object.freeze(o);
console.log(o.a); // 1
o.a = 2;
console.log(o.a); // 1
还有一个称为严格模式的新上下文,可以在其中抛出错误。
function processObject(o) {
"use strict";
delete o.a; // throws a TypeError
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)