Ссылка на объект через сквозные методы, события и еще много чего - PullRequest
0 голосов
/ 25 апреля 2011

Set-Up

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

function input(id,isRequired) {
   this.id = id
   this.isRequired = isRequired
   this.getElement = getElem;
   this.getValue = getValue;
   this.writeSpan = writeSpan;
   this.checkText = checkText;
   this.isText = true
   this.checkEmpty = checkEmpty;
   this.isEmpty = true
   this.isValid = false
}

В настоящее время у меня установлен обработчик событий, подобный этому

firstName.getElement().onblur = function() {validate(firstName)}

, где firstName - объект ввода, а метод getElement () выполняет следующее:

function getElem() {
    return document.getElementById(this.id)
}

Проблема

Я хотел бы иметь возможность ссылаться на объект firstName с помощью функции validate, используя что-то похожее на .this, и эффективно удалять анонимную функцию.Я хочу сделать это главным образом потому, что я работаю с членами команды, которые не очень знакомы с javascript и чем меньше кода, тем лучше.

Я предполагаю, что код, который я ищу, будет выглядеть примерно такэто:

firstName.getElement().onblur = validate

function validate() {
    object = "your code here"
}

Возможно ли это?

1 Ответ

1 голос
/ 25 апреля 2011

Посмотрите на .bind():

firstName.getElement().onblur = validate.bind(firstName);

Это заставит this внутри функции validate обращаться к firstName (поэтому он не передается в качестве параметра).

Это поддерживается не всеми браузерами (это часть ECMAScript5), но ссылка показывает пользовательскую реализацию.

Кроме того, вы можете создать новую функцию, которая генерирует анонимную функцию для вас:

firstName.getElement().onblur = get_validator(firstName);

, где get_validator:

function get_validator(obj) {
   return function() {
       validate(obj);
   }
}

Или вы можете сделать то же самое, но как метод объекта input, так что нужно сделать только:

firstName.getElement().onblur = firstName.getValidator();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...