gpt4 book ai didi

javascript - 如何防止访问尚不存在的对象属性

转载 作者:行者123 更新时间:2023-11-30 05:52:39 25 4
gpt4 key购买 nike

我经常遇到这种情况:

var obj = { field: 2 };

在代码中:

do_something( obj.fiel );//注意:字段拼写错误

ie 属性类型不正确。我想尽早发现这些错误。

我想封印对象,即obj = Object.seal(obj);

但这似乎只能防止像 obj.fiel = 2; 这样的错误,并且在简单读取字段时不会抛出错误。

有没有办法锁定对象,以便检测并抛出对缺失属性的任何读取访问?

谢谢,保罗

编辑:有关情况的更多信息

  1. 纯 javascript,没有编译器。
  2. 供没有经验的程序员用于数学计算目的的库。我想限制他们的错误。我可以发现拼写错误的变量,但他们不能。
  3. 希望尽早发现尽可能多的错误。即在编译时(最好),在运行时遇到拼写错误时立即抛出错误(好),或者在分析结果并发现不正确的计算输出时(非常非常糟糕)。
  4. 单元测试并不是真正的选择,因为数学的目的是发现新知识,因此数学的答案通常是事先不知道的。再一次,没有经验的程序员很难教他们单元测试。

最佳答案

我认为这在 Javascript 中行不通,因为对象是像 JSON 一样编写的,因此属性将是未定义或 null 但不会抛出错误。

解决方案是编写一个原生的 getter/setter。

var obj = {
vars: {},

set: function(index, value) {
obj.vars[index] = value;
},

get: function(index) {
if (typeof(vars[index]) == "undefined") {
throw "Undefined property " + index;
}

return vars[index];
}
};

关于javascript - 如何防止访问尚不存在的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com