Примитивы Javascript против объектов: разъяснение понятия
Несмотря на распространенное мнение, что «почти все в Javascript является объектом», не все сущности языка соответствуют этому определению. Это различие между примитивами и объектами требует пояснения.
Примитивы
В отличие от объектов, примитивы представляют собой неизменяемые значения, существующие в своей фундаментальной форме. У них отсутствуют методы и свойства, и они включают такие типы данных, как:
Объект Обертки
Примитивы имеют соответствующие оболочки объектов (String, Number, Boolean), которые предлагают методы и свойства. Однако сами примитивы не являются объектами. Чтобы взаимодействовать со свойствами примитива, Javascript неявно создает объект-оболочку для операции.
Пример со строками
Рассмотрите фрагмент кода ниже:
var s = "foo"; var sub = s.substring(1, 2); // sub is now the string "o"
Внутренне Javascript выполняет следующие шаги:
Попытка назначить свойства примитивам
Назначение свойств примитивам фактически невозможно, поскольку любые такие свойства будут связаны с временным объектом-оболочкой, а не с самим примитивом:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
Функции как объекты
С другой стороны, функции — это настоящие объекты, способные наследовать от класса Object. Они обладают свойствами, и ими можно манипулировать, как и другими объектами:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
В заключение, хотя может показаться, что примитивы ведут себя как объекты, они отличаются от настоящих объектов в Javascript. Обертки объектов позволяют взаимодействовать с примитивными значениями, но примитивы остаются неизменяемыми. Однако функции — это полноценные объекты, полноценные объекты, обладающие всеми объектными возможностями. Это понимание проясняет отношения между примитивами и объектами в языке Javascript.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3