Все в JavaScript является объектом: строка, массив, значение, функция и т. Д. В JS нет концепции,
Но мы можем использовать грамматические характеристики JS для создания объектов с идеей класса.
Оригинальный метод
Код кода копирования следующим образом:
<script type = "text/javascript">
var obj = new Object ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {// добавить метод в объект
Оповещение (this.name);
}
obj.showage = function () {
предупреждение (this.age);
}
obj.showname (); // koji
obj.showage (); // 21
</script>
Приведенный выше метод генерирует объект через новое ключевое слово, а затем добавляет свойства и методы характеристик динамического языка в соответствии с JS.
Создать объект. Среди них это объект, который называет метод.
Таким образом, проблема заключается в том, что если вам нужно создать объект несколько раз, код должен повторяться несколько раз, что не способствует повторному использованию кода.
Фабричный метод
Код кода копирования следующим образом:
<script type = "text/javascript">
функция createObj () {
var obj = new Object (); // Создание объектов
obj.name = "koji";
obj.age = 21;
obj.showname = function () {
Оповещение (this.name);
}
obj.showage = function () {
предупреждение (this.age);
}
Вернуть obj;
}
var obj1 = createObj ();
var obj2 = createObj ();
obj1.showname (); // koji
obj2.showage (); // 21
</script>
Этот метод улучшает скорость повторного использования кода, а также может изменить метод завода и передать назначение параметров.
Код кода копирования следующим образом:
<script type = "text/javascript">
Функция createObj (name, age) {// При конструировании объектов параметр инициализации может быть передана
var obj = new Object (); // Создание объектов
obj.name = name;
obj.age = возраст;
obj.showname = function () {
Оповещение (this.name);
}
obj.showage = function () {
предупреждение (this.age);
}
Вернуть obj;
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
obj1.showname (); // koji
obj1.showage (); // 22
obj2.showname (); // luo
obj2.showage (); // 21
</script>
Хотя вышеуказанный метод может увеличить скорость обновления кода, он имеет большой дефект по сравнению с концепцией класса -объекта. лапша
Относительное изображение подчеркивает свойство объекта, и метод объекта общий. И приведенный выше фабричный метод для создания объекта друг для друга
Объекты создают свои собственные эгоистичные методы. В то же время тот же метод создания одной и той же логики для каждого объекта является пустой тратой памяти. Улучшено следующим образом
Код кода копирования следующим образом:
<span style = "font-size: 14px;"> <script type = "text/javascript">
Функция createObj (name, age) {{
var obj = new Object (); // Создание объектов
obj.name = name;
obj.age = возраст;
obj.showname = shodame;
obj.showage = showage;
Вернуть obj;
}
Функция showerame () {// Функция также является объектом
Оповещение (this.name);
}
функция show () {
предупреждение (this.age);
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
obj1.showname (); // koji
obj1.showage (); // 22
obj2.showname (); // luo
obj2.showage (); // 21
</script> </span>
Вышеупомянутые объекты функции определяются для решения частных задач различных объектов, поддерживающих объекты. Теперь все объекты
Удерживайте ссылку на две вышеупомянутые функции. Но таким образом функция объекта стала независимой и неактуальной для объекта. Это и
Конкретные методы для конкретных методов объекта не соответствуют мыслям конкретных категорий.
Метод функции строительства
Код кода копирования следующим образом:
<script type = "text/javascript">
// Определите конструктор, чтобы генерировать соответствующий объект.
Функциональный человек (имя, возраст) {
// При вызове нового человека, прежде чем выполнять первую строку кода, человек - это человек, а объект находится в памяти
// Присвоение индекса дается этому ключевому слову.
This.name = name; // Это ключевые слова не должны быть меньше. Для текущего объекта, то есть назначение атрибута имени объекта, на которое ссылается это ключевое слово
//, на самом деле это эквивалентно добавлению свойства имени в текущий объект, а затем назначить значение атрибуту своего имени.
this.age = возраст;
this.showname = function () {// добавить метод в текущий объект
Оповещение (this.name);
}
this.showage = function () {
предупреждение (this.age);
}
// Возврат текущего объекта в переменную слева от символа назначения (не нужно использовать возврат)
}
Var obj1 = новый человек ("koji", 22);
var obj2 = новый человек ("luo", 21);
obj1.showname (); // koji
obj1.showage (); // 22
obj2.showname (); // luo
obj2.showage (); // 21
</script>
Метод построения функции такой же, как и заводской метод, и он создаст исключительный функциональный объект для каждого объекта. Конечно, вы также можете поместить эти функции
Объект определяется вне конструктора, так что объекты и методы не зависят друг от друга.
Метод прототипа: свойство прототипа объекта, используемого этим методом
Код кода копирования следующим образом:
Script Type = "Text/JavaScript">
Function Person () {} // Определите воздушную функцию и не может передать параметры
// Дайте все методы всех атрибутов атрибуту прототипа
Person.prototype.name = "koji"; // Добавить атрибуты
Person.prototype.age = 22;
Person.prototype.showname = function () {// добавить метод
Оповещение (this.name);
}
Person.prototype.showage = function () {
предупреждение (this.age);
}
var obj1 = новый человек ();
var obj2 = новый человек ();
obj1.showname (); // koji
obj1.showage (); // 22
obj2.showname (); // koji
obj2.showage (); // 22
</script>
Когда объект человека генерируется, атрибуты прототипа присваиваются новому объекту. Тогда атрибуты и методы используются.
Проблема этого метода заключается в том, что конструктор не может быть передан, и каждый вновь сгенерированный объект имеет значение по умолчанию. Во -вторых, обмен методом не обменивается
Любая проблема, но обмен атрибутами является проблемой, когда атрибут является объектом, который может изменить состояние.
Код кода копирования следующим образом:
<script type = "text/javascript">
Function Person () {} // Определите воздушную функцию и не может передать параметры
Person.prototype.age = 22;
Person.prototype.array = new Array ("koji", "luo");
Person.prototype.showage = function () {
предупреждение (this.age);
}
Person.prototype.showarray = function () {
Предупреждение (this.Array);
}
var obj1 = новый человек ();
var obj2 = новый человек ();
obj1.array.push ("kyo");
obj1.showarray ();
obj2.showarray ();
</script>
Когда приведенный выше код добавляет элементы в атрибут OBJ1 к атрибуту OBJ1, элемент атрибута ARRA OBJ2 также следует за
Влияние заключается в том, что свойство массива объектов OBJ1 и OBJ2 цитирует один и тот же объект массива, поэтому измените этот массив
Объект, атрибут объекта массива, естественно, будет естественно повлиять
Смешанный конструктор/метод прототипа
Используйте конструктор, чтобы определить атрибуты объекта и использовать прототип для определения объектов, чтобы атрибут мог быть достигнут
Частный и обмен методом.
Код кода копирования следующим образом:
<script type = "text/javascript">
Функциональный человек (имя, возраст) {
this.name = name;
this.age = возраст;
this.array = new Array ("koji", "luo");
}
Person.prototype.showname = function () {
Оповещение (this.name);
}
Person.prototype.showarray = function () {
Предупреждение (this.Array);
}
Var obj1 = новый человек ("koji", 22);
var obj2 = новый человек ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
obj1.showname (); // koji
obj2.showarray ();
obj2.showname (); // luo
</script>
После того, как атрибуты являются частными, изменение их соответствующих атрибутов не повлияет на другие объекты. В то же время метод также используется каждым объектом. Семантически,
Это соответствует требованиям программирования лица -объекта.
Динамический прототип
Код кода копирования следующим образом:
<script type = "text/javascript">
Функциональный человек (имя, возраст) {
this.name = name;
this.age = возраст;
this.array = new Array ("koji", "luo");
// Если _initialized в объекте человека не определен, это указывает на то, что он еще не добавил метод к прототипу человека
ifOf Person._Initialized == "недостаточно")
{{
Person.prototype.showname = function () {
Оповещение (this.name);
}
Person.prototype.showarray = function () {
Предупреждение (this.Array);
}
Person._Initialize = true;
}
}
Var obj1 = новый человек ("koji", 22);
var obj2 = новый человек ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
obj1.showname (); // koji
obj2.showarray ();
obj2.showname (); // luo
</script>
Этот метод похож на конструктор/прототип. Просто поместите метод в конструктор, в то же время
Атрибут добавляется к функции, чтобы убедиться, что оператор IF может быть успешно выполнен только один раз
Наиболее широко используемым в практических приложениях является метод конструктора/прототипа. Динамический метод прототипа также очень популярен, он имеет функции и структуру
Метод функции/прототипа эквивалентен. Не используйте только конструктор или метод прототипа.