JS-это объект, основанный на языке, который может имитировать объектно-ориентированные языки, такие как Java | C ++, используя объектно-ориентированные идеи.
• Ориентирован на процесс
◦ Следуйте шагам, чтобы решить проблему
• Объектно-ориентированный
◦ Фокус на объектах (содержание и роли), необходимые для решения проблемы, а затем вызовут соответствующие методы в соответствии с определенными правилами в соответствии с бизнес -логикой.
Объекты делятся на системные объекты и пользовательские объекты. Мы можем создавать системные объекты, вызывая системный конструктор, такой как массив | Дата и т. Д. Пользовательские объекты должны создаваться сами по себе и не могут быть созданы с помощью системных функций.
JavaScript создать объект
1. Создать напрямую
// Создать напрямую // JS Создать объект // 1: Создать пустой объект var person1 = new Object (); // 2: добавить необходимые свойства и методы объекта в Person1.name = "ailer"; Консоль .log (person1.name); Person1.gender = "Мужчина"; // 3: Метод добавлен в этот объект | (функция) Person1. Manager = function () {console .log ("Ailer - это мое английское имя"); } // 4: Метод объекта вызова: объект. Method name (); Person1.manager (); // функция | Метод? Когда функция принадлежит объекту, функция принадлежит методу в этом объекте; Функция вызывается через имя метода; // переменная | атрибут? Когда переменная принадлежит определенному объекту, переменная является методом в этом объекте. Вызовы переменные по именам атрибутов. // Увеличение человека1.age = "6"; // Изменение Person1.name = "Lemon"; // проверьте консоли .log (person1.name); // удалить Person1.age; Консоль .log (Person1.age); ==> Undefined // ссылочный тип, адрес хранения // Основной тип: бит флага значения сохранения/* var arr1 = [1,2,3,4] var arr2 = [5, 6, 7,9]; var arr2 = arr1; // arr2 [0] = 10; // Изменение значения в arr2, arr1 также изменяет оповещение (arr1 [0]); // ===> 10 Справочный тип*/var per2 = new object (); per2.name = "relia"; per2.age = "18"; per2.gender = "femal"; per2.hobby = "lemons"; // 1: Доступ к свойствам через. (точечный синтаксис) // 2: доступ к свойствам объекта через [] (квадратные кронштейны); Квадратные кронштейны должны быть строками атрибутов или переменными, которые сохраняют строку атрибута | Используйте квадратные скобки var n = "name" //console.log(per2*"name"цин) ;//double Quotes Консоль .log (per2 [n]); для (var property в per2) {// console.log (per2 [свойство]); }Несмотря на интуитивно понятный, код избыточно при создании нескольких объектов
2. Создать использование функций (заводский режим)
Чтобы решить проблему нескольких аналогичных объявлений объектов, мы можем использовать метод, называемый заводским шаблоном, который должен решить проблему создания объектов с большим количеством дублирования.
// Определить функцию конструктора CreatePerson (name, age) {// Создать новый пустой объект var person = new Object; // Добавить атрибут | Method person.name = name; человек.age = возраст; человек. Manager = function () {console .log ("ai"); } // возвращение возвращаемого человека; } var per1 = createPerson ("Aier", 12); Консоль .log (per1.name); var per2 = createperson ("лимон", 23); Консоль .log (per2.age); console.log (per2 ancessionof object); // true console.log (per2 ancessionof createperson); // false // не может различить консоль типа объекта.Отлично: объемное создание похожих случаев
Отсутствует: экземпляр использует аналогичные атрибуты, в результате чего отходы памяти являются публичными, а тип объекта нельзя различить.
3. буквальное творение
Отлично: просто и прямой
Отсутствует: Невозможно создать похожие объекты в партиях
// объект, созданный литералами, не указывает на экземпляр, но на объект // создавать var per1 = {name: «ailer», конструктор: per1, возраст: 12, пол: «Женский», Hobby: «Play», eat: function () {console.log (this.name); }} per1.eat (); // ailer per1.name = "Лимон"; per1.eat (); // lemon console.log (typeof per1); // console console.log (per1.constructor == Object); // true4. Новый+Конструктор
// Конструктор создает объект, и его дочерние объекты не распознаются по экземпляру. Все, созданные с помощью новых объектов+obj //, расположены, но некоторая область кода все еще потрачена впустую; ==> создать создание прототипа // Создать объект js new+constructor // 1: Создать конструктор | Обычно первая буква является заглавная функция CreatePerson (имя, возраст) {// 2: прикрепите атрибуты | Метод объекта на этом указателе. Когда функция вызвана для создания объекта, этот указатель указывает на этот новый объект; // это добавляется к этому объекту this.name = name; this.age = возраст; /* Это.speak = function () {// Здесь также указывает на консоль объекта создания (this.name+"hello"); }} /* Createperson.prototype.gender = "20"; CreatePerson.protototype. ea = function () {console .log (this.name+ "sfd"); }*/// __proto__: is: атрибут прототипа в объекте экземпляра, указывающий на объект прототипа, соответствующий соответствующему конструктору // [[прототип]] // call var per1 = new createperson ("aeler", "20"); var per2 = new Createperson ("relia", "18"); Консоль .log (per1 экземпляр Createperson); // == True Console .log (per2 экземпляр Createperson); // ==> True Console .log (per1.speak == per2.speak); // == Неверно означает, что система открыла две различные области кода, вызывая отходы памяти.Это удобнее создать буквальный, поэтому он генерирует конструктор, нормальный конструктор (заводской шаблон) и экземпляр подъекта не распознается, а память потрачена впустую. Используйте новый+ конструктор, и подборка распознается, но какой-то код все еще дублируется, память потрачена впустую, и код прототипа генерируется для его решения.
5. Прототип режим
Функция CreateAnimal (имя, возраст) {//1.2: связывать внешние параметры с атрибутом экземпляра this.name = name; this.age = возраст; } //1.3 связывать один и тот же атрибут на прототипе (атрибут прототипа, метод прототипа) createanimal.prototype.gender = "male"; CreateAnimal.prototype.style = function () {console.log (this.name + "ailers"); }; // 2: вызовите конструктор, чтобы создать объект var cat1 = new Createanimal ("xiaohua", "2"); var cat2 = new Createanimal ("Xiaohua", "2"); cat1.style (); console.log (cat1.style == cat2.style); // Метод ссылается на тот же адрес, поместите атрибут в объект прототипа, чтобы сохранить адрес // экземпляр может определить, какой объект принадлежит [function] // конструкторный строитель может также использовать его, чтобы определить, какой объект принадлежит [Contructor] [Constant] // объект энцирзации. Разница между console.log (экземпляр CAT1 CreateAnimal); // True Console.log (CAT1 ENTASTIONOF Object); // True Console.log (CAT1 ExtanceOf Object); // True Console.log (cat1.constructor == createAnimal); // true console.log (cat1.constructor == объект); // == false // Прототип конструктора также имеет атрибут конструктора, который относится к консоли функции конструктора. Этот атрибут является атрибутом экземпляра или прототипом // alert («Имя» в CAT1) // TRUE // ALERT («Пол» в CAT1); // TRUE // HASOWNPROPERTY: чтобы определить, является ли определенное свойство атрибутом экземпляра или унаследовано от атрибута прототипа, если он истинно, иначе не существует | не возвращает ложь; console.log (cat1.hasownproperty ("aaa")); // false Не существующее свойство возвращает false console.log (cat1.hasownproperty ("name")); // true encess property console.log (cat1.hasownproperty ("стиль"); // Неверно. Прототип свойств инструмента класса класса. } else {return false; }} else {return false; }}/*Функция isproperty (object, property) {// Судья, есть ли свойство в прототипе return!Динамический режим прототипа
// инициализировать функцию прототипа на (имя, возраст, пол) {this.name = name; this.age = возраст; this.gender = пол; // выполнять только один раз при инициализации прототипа if (typeof this.sayname! = "Function") {person.prototype.sayname = function () {alert (this.name); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.