расширение пространства имен в prototypejs - PullRequest
0 голосов
/ 16 февраля 2011

Чтобы продлить класс, например, Элемент, в Prototype.js, я делаю это так (обновите меня, если это изменилось)

var myFunctions = {

    custom: function(element)   
    {
        # yadda yadda

        return element;
    }

};


Element.addMethods(myFunctions);

Теперь у прототипа есть несколько пространств имен, например Form. Я хочу расширить Form.Element, потому что мне нужны некоторые пользовательские функции для работы с вводами формы.

Пытаясь

Form.Element.addMethods(myFunctions);

бросков

Error: Form.Element.addMethods is not a function

Как я могу сделать это правильно?

1 Ответ

2 голосов
/ 16 февраля 2011

addMethods() - это метод Class.Element это класс.Form и Form.Element являются объектами.Попробуйте использовать Object.extend():

 Object.extend(Form.Element, myFunctions);

Или проще, поскольку каждый объект является уникальным экземпляром, с которым вы можете работать непосредственно.Хотя Object.extend выглядит аккуратнее при добавлении нескольких функций.

Form.Element.custom = function(element)   
{
    # yadda yadda

    return element;
}
...