Книга: Выразительный JavaScript
Методы
Методы
Методы – свойства, содержащие функции. Простой метод:
var rabbit = {};
rabbit.speak = function(line) {
console.log("Кролик говорит '" + line + "'");
};
rabbit.speak("Я живой.");
// ? Кролик говорит 'Я живой.'
Обычно метод должен что-то сделать с объектом, через который он был вызван. Когда функцию вызывают в виде метода – как свойство объекта, например object.method()
– специальная переменная в её теле будет указывать на вызвавший её объект.
function speak(line) {
console.log("А " + this.type + " кролик говорит '" + line + "'");
}
var whiteRabbit = {type: "белый", speak: speak};
var fatRabbit = {type: "толстый", speak: speak};
whiteRabbit.speak("Ушки мои и усики, я же наверняка опаздываю!");
// ? А белый кролик говорит 'Ушки мои и усики, я же наверняка опаздываю!'
fatRabbit.speak("Мне бы сейчас морковочки.");
// ? А толстый кролик говорит 'Мне бы сейчас морковочки.'
Код использует ключевое слово this
для вывода типа говорящего кролика.
Вспомните, что методы apply
и bind
принимают первый аргумент, который можно использовать для эмуляции вызова методов. Этот первый аргумент как раз даёт значение переменной this
.
Есть метод, похожий на apply
, под названием call
. Он тоже вызывает функцию, методом которой является, только принимает аргументы как обычно, а не в виде массива. Как apply
и bind
, в call
можно передать значение this
.
speak.apply(fatRabbit, ["Отрыжка!"]);
// ? А толстый кролик говорит 'Отрыжка!'
speak.call({type: "старый"}, "О, господи.");
// ? А старый кролик говорит 'О, господи.'
- Взаимодействие с устройствами
- Вопросы, которые вы должны задать, и вещи, которые обязаны сделать
- Определение проекта
- Embedded Linux development using Eclipse
- Андрей Николаевич Колмогоров
- Элементы
- Что к чему в новом модуле
- Дайте мне повод подписаться
- Повреждение жесткого диска
- Определение брендинга
- Разработка программ обучения продажам
- Заголовки