English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Объекты состоят изСвойстваиМетодысоставленных из набора данных.
Как и во многих других языках программирования, объекты в JavaScript можно сравнить с объектами реального мира.
В JavaScript, по сути, все является объектом:
Строки могут быть объектами (если они определены с помощью ключевого слова new)
Числа могут быть объектами (если они определены с помощью ключевого слова new)
Булевы значения могут быть объектами (если они определены с помощью ключевого слова new)
Даты всегда объекты
Математические значения всегда объекты
Массивы всегда объекты
Регулярные выражения всегда объекты
Функции всегда объекты
Object это объект
Все значения JavaScript, кроме primitives, являются объектами.
Базовые значения не имеют свойств или методов.
В JavaScript есть 5 видов базовых типов:
string
number
boolean
null
undefined
Объекты являются переменными
var user = "oldtoolbag.com";Тестирование看看‹/›
Переменные JavaScript могут содержать только одно значение.
Объекты также являются переменными, но объекты могут содержать множество значений.name:valueДа, и разделены двоеточием (:).
var user = {firstName: "Вишал", lastName: "Джадар", age: 22, location: "Нью-Дели"};Тестирование看看‹/›
JavaScript объекты представляют собой набор unordered свойств.
Свойства представляют собой связь между именем и значением в объекте и могут содержать любые типы данных.
Свойства обычно указывают на характеристики объекта.
Свойства | Значения свойств |
---|---|
firstName | Вишал |
lastName | Джадария |
age | 22 |
location | Новый Дели |
Вы узнаете больше о свойствах в следующей главе.
Методы являются функциями, хранящимися в качестве значений свойств объекта, поэтому это задачи, которые может выполнять объект.
Методы хранятся в качестве свойств какОпределение функции.
Свойства | Соответствующее значение |
---|---|
firstName | Вишал |
lastName | Джадария |
age | 22 |
location | Новый Дели |
getName | function() {return this.firstName + " " + this.lastName;} |
Внимание:является функцией, хранящейся в качестве свойства.
JavaScript имеет множество предопределенных объектов. Кроме того, вы можете создать свои собственные объекты.
Есть несколько способов создания нового объекта:
ИспользованиеКонстанты объекта, которая использует фигурные скобки: {}
ИспользованиеКонструктор объекта, которая использует new Object()
Или, вы можете сначала создатьКонструктор Затем создайте объект, вызывая эту функцию
ИспользованиеКонстанты объектаявляется наиболее простым способом создания JavaScript объекта.
ИспользованиеКонстанты объектаВы можете определить и создать объект в одной строке.
Ниже приведен пример создания нового JavaScript объекта с четырьмя свойствами:
var user = {firstName: "Вишал", lastName: "Джадар", age: 22, location: "Нью-Дели"};Тестирование看看‹/›
Определение объекта может распространяться на несколько строк:
var user = { firstName: "Вишал", lastName: "Джадария", age: 22, location: "Новый Дели" };Тестирование看看‹/›
ИспользованиеКонструктор объектаявляется еще одним способом создания JavaScript объекта.
Ниже приведен пример создания нового JavaScript объекта с четырьмя свойствами:
var user = new Object(); user.firstName = "Вишал"; user.lastName = "Джадария"; user.age = 22; user.location = "Новый Дели";Тестирование看看‹/›
upper two examples are completely identical. Не нужно использовать new Object().
ИспользованиеОбъектное выражениеявляется наиболее распространенным и предпочтительным методом, так как он менее wahrscheinlich вызывает несовместимости и неожиданные результаты.
Кроме того, вы можете создать объект двумя следующими шагами:
через написаниеКонструкторОпределение типа объекта (по соглашению используется верхний регистр)
Пример создания объекта с помощью ключевого слова new
Пример определения типа объекта через конструктор:
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; }
Теперь мы можем создать объект с именемuser1объектов, как показано ниже:
var user1 = new User("Вишал", "Джадар", 22, "Нью-Дели");Тестирование看看‹/›
Мы обсудим его позже в этом руководстве.Конструктор.
Изменяемые — это переменные, которые можно изменить. В JavaScript только объекты и массивы изменяемы, а не простые значения.
Изменяемые объектыявляются объектами, чье состояние можно изменить после их создания.
Невозможные для измененияОбъекты — это объекты, чья состояние не может быть изменено после их создания.
строкамиичисламиявляютсяНевозможные для изменения. Давайте разберем это на примере:
var immutableString = "Hello"; // В上游 коде был создан новый объект с строковым значением. immutableString = immutableString + "World"; // Мы теперь добавляем "World" к существующему значению.
После добавления "immutableString" к значению строки произойдет следующее:
Получается текущее значение "immutableString".
"World" добавляется к существующему значению "immutableString".
Затем результат значения назначается новому блоку памяти.
Теперь объект "immutableString" указывает на созданное новое пространство памяти.
Теперь созданное пространство памяти доступно для переработки мусора.
Объекты изменяемы: они адресуются по ссылке, а не по значению.
Если user является объектом, то следующие строки не создадут копию этого пользователя:
var x = user; // Это не создаст копию user.
Объект x не является копией user, это сам user. X и user — это один и тот же объект.
Любые изменения в x также изменят user, так как x и user являются одним и тем же объектом.
var user = {firstName: "Вишал", lastName: "Джадар", age: 22, location: "Нью-Дели"}; var x = user; x.location = "Goa"; // Это изменит x.location и user.location одновременноТестирование看看‹/›
В JavaScript объекты являются типом ссылок. Даже если два различных объекта имеют одинаковые свойства, они никогда не будут равны.
// Два переменных, два различных объекта с одинаковыми свойствами var fruit = {name: "apple"}; var fruitbear = {name: "apple"}; fruit == fruitbear; // возвращает false fruit === fruitbear; // возвращает falseТестирование看看‹/›
Только сравнение одной и той же ссылки на объект с собой даст true:
// Два переменных, один объект var fruit = {name: "apple"}; var fruitbear = fruit; // Ассигнование ссылки на объект fruit объекту fruitbear // Здесь fruit и fruitbear указывают на один и тот же объект fruit == fruitbear; // возвращает true fruit === fruitbear; // возвращает trueТестирование看看‹/›