我是JS小白,正在看书Javascript Patterns为了理解。我可以看到的代码片段之一:
var myFunc = function param() {
...
...
};
myFunc.cache={};
这表示函数体之外的任何人都可以添加新属性。这不会破坏封装吗?如果程序的其他部分继续添加新属性使我的对象创建变得庞大怎么办?如果有人删除/修改了我定义的属性怎么办?
我不知道我称其为“问题”是否正确。但如果是,请提供避免这种情况的方法。
谢谢!
最佳答案
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
}
关于Javascript : How to avoid addition of a new property in a function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172119/