Вызовите функцию с “этим”

Кажется, в конце концов, что внешний скрипт должен присутствовать на всех узлах исполнителя. Один из способов сделать это - передать ваш скрипт через spark-submit (например, --files script.sh), и тогда вы сможете ссылаться на это (например, "./script.sh") в rdd.pipe.

11
задан Brian Tompsett - 汤莱恩 31 May 2015 в 12:23
поделиться

2 ответа

Следующее должно сделать это:

function handleOnClick() {
    if( confirm( "Sure?" ) ) {
        return handleOnClickConfirmed.call( this );
    }
    return false;
}

call() функция, присоединенная к Function объекты разработаны для разрешения этого; вызывание функции с желаемым контекстом. Это - чрезвычайно полезный прием при установке обработчиков событий, которые перезванивают в функции в других объектах.

26
ответ дан 3 December 2019 в 01:45
поделиться

Ответ Rob является лучшим ответом для Вашей проблемы, но я хотел обратиться к чему-то, что Вы записали в своем исходном вопросе:

Я знаю, что могу передать это как аргумент handleOnClickConfirmed, но часть моего кода уже использует handleOnClickConfirmed, и я не хочу должным быть переписывать те вызовы.

Параметры JavaScript являются всегда дополнительными, что касается интерпретатора. Например, если у Вас есть функция:

function MyFunction(paramA, paraB) {
  // do nothing
}

Все эти вызовы выполнятся без ошибки:

MyFunction(1,2);
MyFunction(1);
MyFunction();

Таким образом, Вы могли изменить handleOnClickConfirmed для принятия то, что по существу будет дополнительным параметром. Как так:

function handleOnClickConfirmed(context) {
  context = context || this;
  // use context instead of 'this' through the rest of your code
}

Снова, в данном случае, функция вызова является лучшим решением. Но техника, которую я обрисовал в общих чертах выше, является хорошей, чтобы иметь на Вашей панели инструментов.

11
ответ дан 3 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: