1. Обзор
На языке Java мы можем определить наши собственные классы и создавать объекты на основе этих классов для использования. В JavaScript мы также можем определить наши собственные классы, такие как определение класса пользователя, хэш -класс и т. Д.
В настоящее время в JavaScript есть некоторые стандартные классы, такие как дата, массив, Regexp, строка, математика, номер и т. Д., Которые предоставляют нам много удобств для программирования. Но для сложных клиентских программ они далеко не достаточно.
В отличие от Java, Java2 предоставляет нам много стандартных классов, которые в основном отвечают нашим потребностям в программировании. Тем не менее, JavaScript предоставляет несколько стандартных классов, и многие потребности в программировании должны быть реализованы нами. Например, JavaScript не имеет хэш -таблицы, что неудобно при обработке значений ключей.
Поэтому я лично думаю, что полное представление JavaScript объекта должно быть следующим:
2. Основные понятия
1. Настройте объект.
Согласно механизму расширения объектов JS, пользователи могут настроить объекты JS, что похоже на Java Language.
Соответствующие пользовательским объектам являются стандартные объекты JS, такие как дата, массив, математика и т. Д.
2. Прототип
В JS это способ создать свойства и методы объекта, и с помощью прототипа вы можете добавить новые свойства и методы в объекты.
С помощью прототипа мы можем добавить новые свойства и методы в стандартные объекты JS, например, для строковых объектов мы можем добавить в него новый метод Trim ().
В отличие от строгих языков программирования, таких как Java, мы можем динамически добавить новые свойства в объекты JS во время выполнения.
Три, грамматические правила
1. Метод создания объекта
1) Метод инициализации объекта
Формат: ObjectName = {Property1: value1, Property2: value2,…, PropertyN: Valuen}
свойство является собственностью объекта
Значение - это значение объекта, а значение может быть одной из строки, числа или объекта
Например: var user = {name: "user1", возраст: 18};
var user = {name: "user1", job: {зарплата: 3000, заголовок: программист}
Методы, которые также могут быть инициализированы таким образом, например:
var user = {name: "user1", возраст: 18, getName: function () {return this.name; }}Следующее будет объяснено с целью метода конструктора, включая определение атрибутов и методов, а также будет объяснено со ссылкой на метод конструктора.
2) Метод конструктора
Напишите конструктор и создайте объект с помощью нового метода. Конструктор мог бы нести параметры конструктора
Например:
Пользователь функции (имя, возраст) {this.name = name; this.age = возраст; this.canfly = false; } var используйте = new user ();2. Определить свойства объекта
1) В JS три типа свойств могут быть определены для объектов: частные свойства, свойства экземпляра и свойства класса. Подобно Java, частные свойства могут использоваться только внутри объектов. Свойства экземпляра должны быть направлены на экземпляр объекта, а свойства класса могут быть направлены непосредственно через имя класса.
2) Частное определение атрибутов
Частные атрибуты могут быть определены и используются только в конструкторе.
Синтаксический формат: var PropertyName = value;
Например:
функция пользователя (возраст) {this.age = age; var Ischild = возраст <12; this.islittlechild = ischild; } var user = новый пользователь (15); Alert (user.islittleChild); // Правильный способ оповещения (user.ischild); // Ошибка: объект не поддерживает это свойство или метод3) Есть также два способа определения атрибутов экземпляра:
Метод прототипа, синтаксический формат: functionName.prototype.propertyname = value
Этот метод, синтаксический формат: this.propertyname = значение, обратите внимание на местоположение, используемое в следующих примерах
Значение выше может быть создание символов, число и объект.
Например:
function user () {} user.prototype.name = "user1"; User.prototype.age = 18; var user = new user (); Alert (user.age); - -3) Определение атрибута класса
Синтаксический формат: functionName.propertyName = value
Например:
function user () {} user.max_age = 200; User.min_age = 0; Alert (user.max_age);Обратитесь к свойствам класса стандартных объектов JS:
Number.max_value // максимальное числовое значение math.pi // pi
4) В дополнение к более формальным методам выше, существует также особый способ определения атрибутов, синтаксический формат: obj [index] = значение
пример:
Пользователь функции (имя) {this.name = name; this.age = 18; это [1] = "OK"; это [200] = "Год"; } var user = новый пользователь ("user1"); оповещение (пользователь [1]);В приведенном выше примере важно отметить, что возрастный атрибут не получен через это [1], и это не может быть получено через это [0]. То есть на индекс, определенный индексом, должен быть упомянут с использованием режима индекса и не определяется режимом индекса, и должен быть упомянут нормально.
3. Определить метод объекта
1) Существует три типа методов, которые можно определить для объектов в JS: частные методы, методы экземпляра и методы класса, аналогичные Java:
Частные методы могут использоваться только внутри объектов
Методы экземпляра должны быть созданы, прежде чем их можно будет использовать
Методы класса могут использоваться непосредственно через имена классов
Примечание. Определение метода не может быть выполнено с помощью метода индекса, упомянутого выше.
2) Определить частные методы
Частные методы должны быть определены в теле конструктора и могут использоваться только в теле конструктора.
Формат синтаксиса: метод функции (arg1,…, argn) {}
Например:
Пользователь функции (имя) {this.name = name; функция getNamelength (namest) {return namest.length; } this.namelength = getNamelength (this.name); }3) Определите метод экземпляра, в настоящее время можно использовать два метода:
Метод прототипа, используемый вне конструктора, синтаксический формат:
functionname.prototype.methodname = method;
или
functionName.prototype.methodName = function (arg1,…, argn) {};
Этот метод, используемый внутри конструктора, синтаксический формат:
this.methodName = метод;
или
this.methodname = function (arg1,…, argn) {};
В описании синтаксиса выше метод - это метод, который уже существует снаружи. Метод объекта, который будет определяться методом именем, означает, что внешний метод присваивается методу объекта напрямую.
Определение метода объекта в форме функции (arg1,…, argn) {} - это то, что разработчики должны освоить.
Некоторые примеры определения метода экземпляра: пример 1
Пользователь функции (имя) {this.name = name; this.getName = getUsername; this.setname = setUsername; } function getUsername () {return this.name; } Function setUsername (name) {this.name = name; }Некоторые примеры определения метода экземпляра: пример 2
Пользователь функции (имя) {this.name = name; this.getName = function () {return this.name; }; this.setName = function (newName) {this.name = newName; }; }Некоторые примеры определения метода экземпляра: Пример 3
Пользователь функции (имя) {this.name = name; } User.prototype.getName = getUsername; User.prototype.setname = setusername (); function getUsername () {return this.name; } Function setUsername (name) {this.name = name; }Некоторые примеры определения метода экземпляра: пример 4
Пользователь функции (имя) {this.name = name; } User.prototype.getName = function () {return this.name; }; User.prototype.setname = function (newName) {this.name = newName; };4) Определить методы класса
Методы класса должны быть определены вне конструктора и могут быть направлены непосредственно с помощью имени конструктора.
Синтаксический формат:
functionName.methodName = method;
или
functionName.methodName = function (arg1,…, argn) {};
пример:
Пользователь функции (имя) {this.name = name; } User.getMaxage = getUsermaxAge; function getUsermaxAge () {return 200; }или
User.getMaxage = function () {return 200;};
Alert (user.getMaxage ());
4. Ссылки на свойства и методы
1) С точки зрения видимости:
Частные свойства и методы могут быть направлены только внутри объекта.
Свойства и методы экземпляра могут использоваться в любом месте, но они должны ссылаться на объекты.
Свойства и методы класса могут использоваться в любом месте, но нельзя ссылаться на экземпляр объекта (это отличается от Java, где к экземпляру можно получить статические элементы).
2) с уровня объекта:
Подобно ссылкам на бобы Java, могут быть сделаны глубокие ссылки.
Несколько способов:
Простая собственность: obj.propertyname
Свойства объекта: obj.innerobj.propertyname
Свойство индекса: obj.propertyname [Index]
Для более глубоких ссылок, аналогичных вышеупомянутым.
3) Из метода определения:
Атрибуты, определенные с помощью метода индекса, должны быть направлены на метод индекса.
Атрибуты, определяемые неиндексными методами, должны ссылаться нормально.
Также примечание: метод объекта не может быть определен с помощью метода индекса.
5. Динамическое добавление и удаление свойств и методов
1) Для объекта, который был создан, мы можем динамически добавить и удалить его свойства и методы. Синтаксис выглядит следующим образом (при условии, что экземпляр объекта obj):
Динамически увеличить свойства объекта
obj.newpropertyname = value;
Динамически увеличить метод объекта
obj.newmethodname = method или = function (arg1,…, argn) {}
Динамически удалить свойства объекта
Удалить obj.propertyname
Динамически удалить метод объекта
Удалить obj.methodName
2) Пример:
Пользователь функции (имя) {this.name = name; this.age = 18; } var user = новый пользователь ("user1"); user.sister = "Сьюзен"; alert (user.sister); // запустить через delete user.sister; alert (user.sister); // Ошибка отчета: объект не поддерживает это свойство user.getmothername = function () {return "mary";} alert (user.getmothername ()); // запускается через Delete user.getMotherName; Alert (user.getMotherName ()); // Ошибка отчета: объект не поддерживает этот методЧетыре, резюме
1. Пользовательский механизм объекта является одним из наиболее привлекательных механизмов для JS. Это просто отлично подходит для программистов C ++ и Java!
2. Есть два способа создания объекта: инициализатор объекта и конструктор.
3. Свойства и методы объекта, ограничения с видимостью, а также атрибуты и методы с различной видимостью определяются по -разному.
Приведенная выше статья основана на объектах JS, атрибутах операций и методах, которые - все, что я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.