Конструкторы объектов 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("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");

Попробуйте сами

this ключевым словом

В JavaScript это называется this Вещи, которые являются «владельцами» кода.

this ее значение, когда она используется в объекте, это сам объект.

В конструкторе функцииthis Это заменитель объекта без значений. Когда создается новый объект, значение this становится этим новым объектом.

Обратите внимание this Это не переменная. Это ключевое слово. Вы не можете изменить значение this.

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

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

пример

myFather.nationality = "English";

Попробуйте сами

Новый атрибут добавлен к myFather. Не к myMother и не к любому другому объекту person.

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

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

пример

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

Попробуйте сами

Новый метод добавлен к myFather. Не к myMother и не к любому другому объекту person.

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

В отличие от добавления новых атрибутов к уже существующему объекту, вы не можете добавить новый атрибут к constructor объекта:

пример

Person.nationality = "English";

Попробуйте сами

Чтобы добавить новый атрибут к constructor, вы должны добавить его в функцию constructor:

пример

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

Попробуйте сами

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

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

Ваш constructor может также определять методы:

пример

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;
    };
}

Функция changeName()assigns the value of name to the lastName property of person.

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

myMother.changeName("Jobs");

Попробуйте сами

через myMother замена thisJavaScript может определить,哪个 person он обрабатывает в данный момент.

внутренние JavaScript-конструкторы

JavaScript предоставляет конструкторы для базовых объектов:

пример

var x1 = new Object();    // новый объект Object
var x2 = new String();    // новый объект String
var x3 = new Number();    // новый объект Number
var x4 = new Boolean();   // новый объект Boolean
var x5 = new Array();     // новый объект Array
var x6 = new RegExp();    // новый объект RegExp
var x7 = new Function();  // новый объект Function
var x8 = new Date();      // новый объект Date

Попробуйте сами

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

Знаете ли вы?

Как видно из вышеизложенного, JavaScript предоставляет объектные версии базовых данных: строка, число и логическое значение. Но нет причин создавать сложные объекты. Исходные значения быстрее!

пожалуйста, используйте литерал объекта {} вместо new Object().

пожалуйста, используйте литерал строки "" вместо new String().

пожалуйста, используйте литерал числа Number().

пожалуйста, используйте литерал логического значения new Boolean().

пожалуйста, используйте литерал массива [] вместо new Array().

пожалуйста, используйте литерал шаблона new RexExp().

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

пример

var x1 = {};            // новый объект
var x2 = "";            // новый исходный строковый значений
var x3 = 0;             // новый исходный числовой значений
var x4 = false;         // новый исходный логический значений
var x5 = [];            // Новый объект массива
var x6 = /()/           // Новый объект регулярного выражения
var x7 = function(){};  // Новый объект функции

Попробуйте сами

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

Обычно, строковые значения создаются в виде原始ных значений: var firstName = "Bill"

Но также можно использовать new Ключевые слова для создания строковых объектов: var firstName = new String("Bill")

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

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

Обычно, числовые значения создаются в виде原始ных значений: var x = 456

Но также можно использовать new Ключевые слова для создания числовых объектов: var x = new Number(456)

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

Булевые объекты

Обычно, логические значения создаются в виде原始ных значений: var x = false

Но также можно использовать new Ключевые слова для создания логических объектов: var x = new Boolean(false)

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