Javascript : How to avoid addition of a new property in a function?

标签 javascript oop

我是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/

相关文章:

Javascript - 如何删除字符串的一部分并将其分配给变量进行操作?字符串多种多样

javascript - 查找特定类上方列表项的第一次出现 - JQuery

javascript - 如何在 JavaScript 中以定义的时间间隔运行循环

c++ - 如何不使用虚拟继承?

Javascript,对象数组?

javascript - 模拟鼠标移动,不起作用

php - 关注点分离和 OOP PHP——基于购物车中其他产品的产品价格

javascript - 为 React-Native 应用开 Jest 测试 Animated.View

javascript - Function.prototype.bind.apply 意思没看懂

php - 使用 MVC 和 OOP PHP session 的最佳方式