Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.06.2018, 15:50
Интересующийся
Отправить личное сообщение для RuBrain Посмотреть профиль Найти все сообщения от RuBrain
 
Регистрация: 20.04.2018
Сообщений: 21

Подскажите с объектом
Всем привет

Подскажите, для чего в функции range создается переменная "r"? Это пример из книги Флэнэгана. В последствии обращение без всякой r идет к свойствам и методам.

function inherit(p) {

    if (Object.create) // If Object.create() is defined...
        return Object.create(p); // then just use it.
}

function range(from, to) {
    var r = inherit(range.methods);
    r.from = from;
    r.to = to;
    return r;
}

range.methods = {
    includes: function(x) { return this.from <= x && x <= this.to; },
    foreach: function(f) {
    for(var x = Math.ceil(this.from); x <= this.to; x++) f(x); },

    toString: function() { return "(" + this.from + "..." + this.to + ")"; }
};


var rObject = range(1,3); // Create a range object
rObject.includes(2); // => true: 2 is in the range
rObject.foreach(console.log); // Prints 1 2 3
console.log(rObject); // Prints (1...3)
Ответить с цитированием
  #2 (permalink)  
Старый 05.06.2018, 12:26
Интересующийся
Отправить личное сообщение для RuBrain Посмотреть профиль Найти все сообщения от RuBrain
 
Регистрация: 20.04.2018
Сообщений: 21

Сообщение от Rise Посмотреть сообщение
Для того же для чего переменная x в функции foreach, это локальные переменные.
Ага, не понял сразу, функция просто создает объект с методами прототипа и возвращает его. А в строке 17 не совсем понятно что происходит при вызове из 25 строки. Понятно что выполняется цикл начиная с this.from до this.to, каждый круг к итератору прибавляется по 1 и далее выполняется f(x), не понятно что функция "f" далее делает с "x" и каким образом console.log в 25 строке видит этот самый x, и почему f(x) возвращает этот самый х без return? Отладчиком пробовал поймать все это, но так и не понял логики почему так. Было бы понятно если бы такой код был:

foreach: function(f) {
    for(var x = Math.ceil(this.from); x <= this.to; x++) return x; },


Помогите плз разобраться, а то покоя не дает когда не понимаю как работает.
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2018, 13:39
Интересующийся
Отправить личное сообщение для RuBrain Посмотреть профиль Найти все сообщения от RuBrain
 
Регистрация: 20.04.2018
Сообщений: 21

Сообщение от Rise Посмотреть сообщение
Такие функции, передающиеся аргументом и затем там вызывающиеся, называются callback, т.е. f это коллбэк.
Спасибо, все понятно!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как правильно сделать анимацию выезда ? Валерий1996 Общие вопросы Javascript 1 06.09.2015 12:49
jQuery: 'accepts': есть null или не является объектом sitesv Элементы интерфейса 0 08.04.2013 13:44
Не правильно работает прокрутка, подскажите как сделать правильно? denfer12 Общие вопросы Javascript 0 09.05.2012 00:34
Подскажите, где ошибка? Вып. меню allasan Элементы интерфейса 2 13.03.2012 01:36
Подскажите плизз с выбором селектора для select option frolvict jQuery 2 13.11.2010 15:29