English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
МетодыЭто方法是 функция, связанная с объектом, или функция, связанная с функцией, метод - это объект, который является свойством функции.
Методы определяются так же, как и обычные функции, но они должны быть назначены свойствами объекта.
Чтобы получить метод объекта, вы вызовете его так же, как и обычную функцию, только добавив его к переменной объекта.
// 创建对象 var user = { firstName: "Seagull", lastName : "an", age: 22, location: "New Delhi", getName : function() { return this.firstName + " " + this.lastName; } ; // Активация метода getName() user.getName();Проверьте, посмотрите‹/›
Если метод вызывается без скобок (), он возвращает определение функции:
user.getName;Проверьте, посмотрите‹/›
JavaScript имеет специальное ключевое слово this, которое вы можете использовать в методах для ссылки на текущий объект.
Вы, возможно, уже заметили, что наши методы несколько странные. Вот пример:
getName: function() { return this.firstName + " " + this.lastName; }
Ключевое слово this указывает на текущий объект, в котором код написан - поэтому в данном случае this эквивалентноuser.
Иными словами, this.firstName означаетЭтот объектсвойства firstName.
Вы можете добавитьJS ключевые словаУрокиJSПознакомьтесь с этой статьей о ключевом слове this.
Чтобы добавить новый метод к объекту, вы можете использовать оператор присваивания (=) для назначения нового функции свойству.
Этот пример добавляет метод "greet" к объекту пользователя:
user.greet = function() { return "Hello World"; ;Проверьте, посмотрите‹/›
Getters и setters были введены в ECMAScript 5 (2009).
Getter - это метод получения значения для определенного свойства.
Setter - это метод установки значения для определенного свойства.
Вы можете определить getter и setter для любого предопределенного ядра объекта или пользовательского объекта, поддерживающего добавление новых свойств.
Этот пример использует get locСвойство в качествеlocationЗначение свойства:
// Создание объекта var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", get loc() { return this.location; } ; // 显示来自对象的数据 document.getElementById("para").innerHTML = user.loc;Проверьте, посмотрите‹/›
Этот пример использует set locСвойство в качествеlocationЗначение свойства:
// 创建对象 var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", set loc(x) { this.location = x; } ; // Использование setter для установки свойств объекта user.loc = "Goa"; // 显示来自对象 данных document.getElementById("para").innerHTML = user.location;Проверьте, посмотрите‹/›
Два следующих примера показывают различие между function и getter:
// 创建对象 var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", fullName: function() { return this.firstName + " " + this.lastName; } ; // 显示来自对象 данных document.getElementById("para").innerHTML = user.fullName();Проверьте, посмотрите‹/›
// 创建对象 var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", get fullName() { return this.firstName + " " + this.lastName; } ; // 显示来自对象的数据 document.getElementById("para").innerHTML = user.fullName;Проверьте, посмотрите‹/›
Пример 1 fullName в качествеФункцияДоступ: user.fullName().
Пример 2 fullName в качествеСвойстваДоступ: user.fullName.
Использование Getters и Setters:
Это предоставляет более простой синтаксис.
Это позволяет использовать одинаковый синтаксис для свойств и методов.
Это гарантирует лучшее качество данных.
Это очень полезно для обработки на заднем конце.
Метод Object.defineProperty() также может использоваться для добавления Getter и Setter.
Object.defineProperty(object, property, {value: value})
Давайте рассмотрим пример с объектом "счетчик":
var counter = {i: 0}; Object.defineProperty(counter, "increment", { get: function() {this.i++;} }); Object.defineProperty(counter, "decrement", { get: function() {this.i--;} }); Object.defineProperty(counter, "reset", { get: function() {this.i = 0;} }); Object.defineProperty(counter, "add", { set: function (value) {this.i += value;} }); Object.defineProperty(counter, "subtract", { set: function (value) {this.i -= value;} }); counter.reset; counter.add = 25; counter.increment;Проверьте, посмотрите‹/›