this
в Javascript всегда ссылается на «владельца» выполняемой функции.
Если явный владелец не определен, то ссылается на самый верхний владелец - объект окна.
Итак, если бы я сделал
function someKindOfFunction() {
this.style = 'foo';
}
element.onclick = someKindOfFunction;
this
, он ссылался бы на объект элемента. Но будьте осторожны, многие люди делают эту ошибку
<element onclick="someKindOfFunction()">
В последнем случае вы просто ссылаетесь на функцию, а не передаете ее элементу. Поэтому this
будет ссылаться на объект окна.
Я использую общую библиотеку, а не общую переменную, но я думаю, что это аналогичная ситуация. Я не использую параметр $class
, но я вызываю непосредственно одну из функций, предложенную генератором фрагментов конвейера. У вас может быть список здесь . В приведенном ниже примере я использую привязку usernameColonPassword
. В конвейере я создаю экземпляр утилит класса и передаю конструктору this
. Затем в библиотеке я использую объект step
для доступа к шагам конвейера (например, withCredentials
или usernameColonPassword
).
class Utilities implements Serializable {
def steps
Utilities(steps) {
this.steps = steps
}
def doArchiveToNexus(String credentials, String artifact, String artifact_registry_path){
try {
steps.withCredentials([steps.usernameColonPassword(credentialsId: credentials, variable: 'JENKINS_USER')]) {
steps.sh "curl --user " + '${JENKINS_USER}' + " --upload-file ${artifact} ${artifact_registry_path}"
}
}catch (error){
steps.echo error.getMessage()
throw error
}
}
}