Статьи

Голый Javascript — Основы Объекта


В этой серии «
Голый JavaScript» мы собираемся углубиться в мрачные детали javascript и подробно обсудить его функции, такие как объекты, функции, классы, наследование, прототипы и замыкания.

В первой части этой серии я расскажу об объектах в JavaScript. И так как почти все в JavaScript является объектом, возможно, я могу сказать, что я практически говорю об основных основах языка. С одной стороны, эта часть является просто основой для всех остальных статей этой серии.

JavaScript имеет дело с объектами.
Он имеет дело с ними на столь многих уровнях, что иногда его непостижимо, если вы привыкли писать код на «обычных» языках, таких как Java, C или C #. Все, начиная с функций, наследования и заканчивая массивами, в Javascript имеет совершенно иную перспективу, и это делает язык непредсказуемым для программистов из разных областей программирования.

Прежде чем мы начнем, я хочу начать с одного важного утверждения.
И это «
Почти все в JavaScript является объектом.



Тем не менее, давайте посмотрим, как мы можем создавать объекты.

Есть в основном 2 способа, которыми вы можете создавать объекты
  1. Используя новое ключевое слово.
  2. Дословная декларация.

Используя новое ключевое слово


Это то, к чему программисты из обычных языков привыкли. Синтаксис простой и элегантный. Вы просто создаете новый объект и назначаете его переменной.

var bingo = new Object();

Поскольку я много работал на Java раньше, я могу сказать, что это кажется довольно простым.
В Java класс Object является родительским классом для всех классов. Точно так же класс Object в javascript является основным классом, от которого все объекты наследуют функции. И поскольку все является объектом, тот факт, что javascipt не имеет предопределенных типов, кажется неправильным. Фактически существует один основной тип, и этот тип — Object. Неважно, кто вы или чем занимаетесь, помните, что всемогущий Объект наблюдает за вами!

Если вы не уверены в моем предыдущем утверждении, попробуйте это.

var bingo = new Object();
console.log(typeof bingo);
bingo=10;

console.log(typeof bingo);

Как вы можете видеть выше, мы использовали оператор typeof для определения типа объекта.
То, что вы также заметили бы, это то, что, хотя бинго является объектом, мы вполне могли присвоить ему числовое значение. И когда мы распечатали тип переменной bingo, мы получили тип как число. В javascript есть очень интересная история наследования, которая делает это возможным. Это то, что мы будем подробно обсуждать в другой статье. А пока, просто будьте довольны тем, что вам не нужно беспокоиться о типе объекта, прежде чем присваивать ему значение.

Буквальная декларация

Это, пожалуй, самый распространенный способ объявления объектов. Причина в том, что это так легко, что иногда это сбивает с толку, что вы даже можете сделать это.
var bingo2 = {};

Это очень легко для пальцев, потому что это экономит вам несколько нажатий клавиш, но это практически эквивалентно

var bingo = new Object();

Если вы не привыкли к этому синтаксису, вам лучше привыкнуть к нему.
Потому что, если честно, это не так уж плохо. На самом деле это довольно круто!


Объявление свойств на объектах

Объекты есть объекты. А объекты предназначены для хранения информации. Однако здесь есть небольшое отклонение от традиционных языков. Когда вы создаете объекты, вы можете напрямую объявлять новые свойства этих объектов и присваивать им значения. В отличие от Java, где у вас должен быть предопределенный класс, где вы сначала определяете свойства и методы создаваемых вами объектов, Javascript позволяет вам делать вещи по-другому. Давайте рассмотрим это на примере.
var bingo1 = {}; //Create an object of type Object
var bingo2 = {}; //Create another object of type Object
bingo1.shouts = 'hey!';
bingo2.says = 'hello';

Соблюдайте внимательно.
В приведенных выше примерах, хотя типы объектов bingo1 и bingo2 одинаковы, язык позволяет динамически объявлять новые свойства для каждого из этих объектов, и эти свойства даже не должны быть одинаковыми. Хотя объекты кажутся разными, поскольку содержат разную информацию, оператор typeof возвращает одинаковое значение для каждой из этих переменных.

(typeof bingo1==typeof bingo2) //This returns true

Это то, что нельзя сделать в Java, где вы можете иметь два объекта с совершенно другим набором свойств, но при этом принадлежать к одному и тому же классу.
У вас нет чертежа класса в Javascript. Но это не значит, что вы не можете иметь классы в Javascript. Это просто означает, что концепция классов работает немного иначе в Javascript.


Это краткое введение в то, что подразумевается под объектами в Javascript.
Тем не менее, в этой серии мы рассмотрим много других удивительных особенностей языка Javascript, таких как функции, замыкания, прототипы и различные способы, которыми все эти идеи переплетаются, чтобы создать сеть, какой мы ее знаем.