English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В предыдущих главах мы изучили, как создавать объекты в JavaScript.
Примеры в первых главах ограничены. Они создают только один объект.
Иногда нам нужна "модель", чтобы создавать множество объектов одного и того же типа (пример).
Метод создания "модели" - это использованиеКонструктор объекта。
ОдинКонструктор объектаСоздание нескольких объектов (пример) с одинаковыми свойствами и методами выполняется легко.
В следующем примере function User() является объектным конструктором:
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; }
Для создания объектов одного и того же типа с помощью ключевого слова new используется конструктор:
var Seagull = new User("Seagull", "Anna", 22, "New Delhi"); var tarush = new User("Tarush", "Balodhi", 34, "Bihar");Тест, чтобы увидеть‹/›
Как вы видите, мы можем быстро создать множество различных объектов пользователей, вызывая конструктор User с различными параметрами. Это совпадает с的模式ом, который JavaScript использует в своих内置ных конструкторах (например, Array() и Date()).
JavaScript имеет специальную ключевую слово this, которую можно использовать в методах для ссылки на текущий объект.
Когда this используется в объекте, его значение является самим объектом.
В конструкторе this не имеет значения. Он заменяет новый объект. При создании нового объекта значение this становится новым объектом.
Чтобы добавить новый атрибут к объекту, вы можете использовать оператор присваивания (=) для назначения нового значения свойству.
Seagull.weapon = "Sword";Тест, чтобы увидеть‹/›
Внимание:Этот атрибут будет добавлен к Seagull. Не добавляйте. (Не подходит для других объектов User).
Чтобы добавить новый метод к объекту, вы можете использовать оператор присваивания (=) для назначения нового функции свойству.
Seagull.greet = function() { return "Hello World"; };Тест, чтобы увидеть‹/›
Внимание:Этот метод будет добавлен к Seagull (не指向 другие объекты User).
Мы не можем добавить новый атрибут к конструктору так же, как добавляем новый атрибут к существующему объекту:
User.weapon = "Sword";Тест, чтобы увидеть‹/›
Чтобы добавить новый атрибут к конструктору, его необходимо добавить в конструктор:
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; this.weapon = "Sword"; }Тест, чтобы увидеть‹/›
Иногда мы хотим добавить новый атрибут к конструктору позже, который будет общим для всех объектов (примеров). Ответ:Прототип объекта。
Конструкторы также могут определять методы.
мыНе какДобавление нового метода к конструктору выполняется так же, как и добавление нового метода к существующему объекту.
Методы, добавляемые к объекту, должны быть добавлены в конструкторе.
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; this.fullName = function() { return this.firstName + " " + this.lastName; }; }Тест, чтобы увидеть‹/›
Иногда мы хотим добавить новый метод к конструктору позже, который будет общим для всех объектов (примеров). Ответ:Прототип объекта。
JavaScript имеет следующие内置构造торы для объектов:
let x1 = new String(); // новый объект String let x2 = new Number(); // новый объект number let x3 = new Boolean(); // новый объект布尔ского типа let x4 = new Object(); // новый объект Object let x5 = new Array(); // новый объект Array let x6 = new RegExp(); // новый объект RegExp let x7 = new Date(); // новый объект даты let x8 = new Function(); // новый объект функцииТест, чтобы увидеть‹/›
Как вы можете видеть выше, у JavaScript есть объекты базовых данных типа String, Number и Boolean.
У нас нет причин создавать сложные объекты. Потому что первичные значения значительно быстрее.
Всегда рассматривайте числа, строки или булевы значения как первичные значения. Не рассматривайте их как объекты.
Декларирование этих типов как объектов снижает скорость выполнения и приводит к неожиданным результатам.
var str1 = "New Delhi"; var str2 = new String("New Delhi"); document.write(str1 === str2); // возвращает ошибку, потому что str1 и str2 имеют разные типыТест, чтобы увидеть‹/›
Невозможно сравнить объекты:
var str1 = new String("New Delhi"); var str2 = new String("New Delhi"); document.write(str1 == str2); // возвращает ошибку, потому что str1 и str2 имеют разные типы document.write(str1 === str2); // r возвращает ошибку, потому что str1 и str2 имеют разные типыТест, чтобы увидеть‹/›
Можно также сделать так:
Используйте {} вместо new Object()
Используйте "" вместо new String()
Используйте 0 вместо new Number()
Используйте false вместо new Boolean()
Используйте [] вместо new Array()
Используйте /()/ вместо new RegExp()
Используйте function (){} вместо new Function()
let x1 = {}; let x2 = ""; let x3 = 0; let x4 = false; let x5 = []; let x6 = /()/; let x7 = function(){};Тест, чтобы увидеть‹/›
Обычно, в JavaScript строки создаются как原始ные значения literals: var city = "New Delhi";.
Но также можно использовать ключевое слово new, чтобы определить строку как объект: var city = new String("New Delhi");.
В разделе " JS строки В одной из глав вы узнаете, почему не следует создавать объекты из строк.
Обычно, в JavaScript числа создаются как原始ные значения literals: var num = 50;.
Но также можно использовать ключевое слово new, чтобы определить число как объект: var num = new Number(50);.
В разделе " JS числа В одной из глав вы узнаете, почему не следует создавать объекты из чисел.
Обычно, в JavaScript булевые значения создаются как原始ные значения literals: var x = false;.
Но также можно использовать ключевое слово new, чтобы определить булевое значение как объект: var x = new Boolean(false);.
В разделе " JS булевые значения В одной из глав вы узнаете, почему не следует создавать объекты из булевых значений.