ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
×

JavaScript учебник

JS HOME JS Introduction JS Where To JS Output JS Statements JS Syntax JS Comments JS Variables JS Operators JS Arithmetic JS Assignment JS Data Types JS Functions JS Objects JS Scope JS Events JS Strings JS String Methods JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Dates JS Date Formats JS Date Get Methods JS Date Set Methods JS Math JS Random JS Booleans JS Comparisons JS Conditions JS Switch JS Loop For JS Loop While JS Break JS Type Conversion JS Bitwise JS RegExp JS Errors JS Debugging JS Hoisting JS Strict Mode JS this Keyword JS Style Guide JS Best Practices JS Mistakes JS Performance JS Reserved Words JS Versions JS Version ES5 JS Version ES6 JS JSON

JS Forms

JS Forms Forms API

JS Objects

Object Definitions Object Properties Object Methods Object Constructors Object Prototypes

JS Functions

Function Definitions Function Parameters Function Invocation Function Call Function Apply Function Closures

JS HTML DOM

DOM Intro DOM Methods DOM Document DOM Elements DOM HTML DOM CSS DOM Animations DOM Events DOM Event Listener DOM Navigation DOM Nodes DOM Collections DOM Node Lists

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS AJAX

AJAX Intro AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications

JS JSON

JSON Intro JSON Syntax JSON vs XML JSON Data Types JSON Objects JSON Arrays JSON Parse JSON Stringify JSON PHP JSON HTML JSON JSONP

JS References

JavaScript Objects HTML DOM Objects


JavaScript Конструкторы объектов


Пример

function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

Считается хорошей практикой называть функции конструктора с первой буквой верхнего регистра.


Типы объектов (чертежи) (классы)

Примеры из предыдущих глав ограничены. Они только создают одиночные объекты.

Иногда мы нуждаемся в "план" для создания многих объектов одного и того же "типа".

Способ создания "типа объекта", заключается в использовании функции конструктора объектов.

В приведенном выше примере функция Person () является функцией конструктора объектов.

Объекты одного типа создаются путем вызова функции конструктора с помощью ключевого слова New :

var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");


Ключевое слово this

В JavaScript, вещь называется это объект, который "владеет" код.

Значение this, при использовании в объекте, является сам объект.

В функции конструктора это значение не имеет. Он заменяет новый объект. Значение этого параметра станет новым объектом при создании нового объекта.

Обратите внимание, что это не переменная. Это ключевое слово. Значение этогозначения изменить нельзя.


Добавление свойства к объекту

Добавить новое свойство к существующему объекту очень просто:

Пример

myFather.nationality = "English";

Свойство будет добавлено в моего отца. Не моя мать. (не для других объектов Person).


Добавление метода к объекту

Добавить новый метод к существующему объекту очень просто:

Пример

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};

Метод будет добавлен в моего отца. Не моя мать. (не для других объектов Person).


Добавление свойства в конструктор

Нельзя добавить новое свойство в конструктор объектов так же, как добавляется новое свойство к существующему объекту:

Пример

Person.nationality = "English";

Чтобы добавить новое свойство в конструктор, необходимо добавить его в функцию конструктора:

Пример

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

Таким образом, свойства объекта могут иметь значения по умолчанию.


Добавление метода в конструктор

Функция конструктора также может определять методы:

Пример

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.name = function() {return this.firstName + " " + this.lastName;};
}

Нельзя добавить новый метод в конструктор объектов так же, как добавить новый метод к существующему объекту.

Добавление методов к объекту должно выполняться внутри функции конструктора:

Пример

function Person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName; 
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

Функция чанженаме () присваивает значение Name свойству "Фамилия" пользователя.

Теперь вы можете попробовать:

myMother.changeName("Doe");
'>

JavaScript знает, о каком человеке вы говорите, "заменив" это с Моя мать.


Встроенные конструкторы JavaScript

JavaScript имеет встроенные конструкторы для собственных объектов:

Пример

var x1 = new Object();    // A new Object object
var x2 = new String();    // A new String object
var x3 = new Number();    // A new Number object
var x4 = new Boolean();   // A new Boolean object
var x5 = new Array();     // A new Array object
var x6 = new RegExp();    // A new RegExp object
var x7 = new Function();  // A new Function object
var x8 = new Date();      // A new Date object

Объект Math () отсутствует в списке. Математика является глобальным объектом. Ключевое слово New не может использоваться в математике.


Ты знала?

Как вы можете видеть выше, JavaScript имеет версии объектов примитивных типов данных String, number и Boolean. Но нет причин создавать сложные объекты. Примитивные значения намного быстрее.

Также:

Используйте литералы объекта {} вместо нового объекта ().

Используйте строковые литералы "" вместо новой строки ().

Используйте числовые литералы 12345 вместо нового числа ().

Используйте логические литералы true/false вместо New Boolean ().

Используйте литералы массива [] вместо нового массива ().

Используйте шаблонные литералы /()/ вместо нового регулярного выражения ().

Используйте выражения функции () {} вместо новой функции ().

Пример

var x1 = {};            // new object
var x2 = "";            // new primitive string
var x3 = 0;             // new primitive number
var x4 = false;         // new primitive boolean
var x5 = [];            // new array object
var x6 = /()/           // new regexp object
var x7 = function(){};  // new function object

Строковые объекты

Обычно строки создаются как примитивы: var имя = "John"

Но строки также могут быть созданы как объекты с помощью ключевого слова New : var имя = Новая строка ("John")

Узнайте, почему строки не должны создаваться как объекты в главе JS строк.


Число объектов

Как правило, числа создаются как примитивы: var x = 123

Но номера также могут быть созданы как объекты с помощью нового ключевого слова: var x = новый номер (123)

Узнайте, почему номера не должны быть созданы как объект в главе JS числа.


Логические объекты

Обычно логические значения создаются как примитивы: var x = false

Но булевы также могут быть созданы как объекты, использующие новое ключевое слово: var x = New Boolean (false)

Узнайте, почему логические объекты не должны быть созданы как объект в главе JS booleans.