Нет способа перехватить прямой доступ к свойству в JavaScript. Когда извлекается свойство, которое не было установлено, результатом будет undefined
. Хотя null
и undefined
обычно считаются одной и той же вещью, на самом деле это разные сущности.
В JavaScript undefined
означает отсутствие значения, а null
означает нулевое значение. В некоторых случаях вы можете смешивать undefined и null Например, при использовании оператора ==
они эквивалентны ((null == undefined) === true
). Используя оператор без принуждения, ===
, они различаются ((null === undefined) === false
).
Вы можете использовать это в своих интересах. В то время как большинство людей будут утверждать, что вы должны использовать оператор равенства без принуждения (===
), в большинстве случаев безопасно помещать null
и undefined
в одно и то же ведро, но в меньшей степени вы действительно заботитесь о разнице между двумя , Хитрость заключается в том, что undefined
является свойством глобального объекта и поэтому ему может быть присвоено новое значение.
Если кто-то скажет undefined = 'donkey'
, тогда null == undefined
начнет возвращаться false
. На практике это почти никогда не является проблемой, поскольку большинство людей недостаточно глупы, чтобы переназначить значение undefined.
Таким образом, в обходном порядке, вам не нужно перехватывать доступ к свойствам, чтобы возвращать null
для свойств, которые не были установлены, пока вы сравниваете результат с null
, используя ==
.