我只是好奇浏览器是如何直接完成此操作的。我听说 Javascript 引擎中数组的 .length 属性实际上使用不可见的 setter 和 getter 来实现 ECMA-s 标准的功能,即:“每当长度属性更改时,名称为数组索引的每个属性的值不小于比新长度自动删除”)。我知道在这种情况下需要 setter,但是 getter 又如何呢?我们真的需要调用原生 getter 来获取这个值吗?或者这只是理解 Javascript 引擎的一些错误?
最佳答案
属性可以作为字段实现,也可以作为 setter/getter 方法实现。
如果它是一个字段,那么它只是一个值,设置该值时,除了值发生变化之外,不会发生任何其他事情。
如果您有一个 setter 方法,以便在设置值时执行更多操作,那么您也有一个与之匹配的 getter 方法,即使该 getter 方法除了返回值之外什么也不做。您不想混合实现属性的两种方法,只是朝任一方向一直使用要简单得多。
关于JavascriptEngine 的 Javascript Array .length 属性/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/614279/