Работа с объектами и создание методов в JavaScript, которые возвращают значения - PullRequest
0 голосов
/ 17 сентября 2011

Это сводит меня с ума, потому что я ничего не могу найти в Google.Может быть, это потому, что я не знаю правильную терминологию, чтобы искать правильный.Но это то, что я пытаюсь сделать.

Я хочу создать функцию, которая действует как объект.Я думаю, это называется методом, хотя я могу ошибаться.

Проверьте это, это какой-то псевдокод того, что я хотел бы сделать.

function myMethod(){
var p = this.getAttribute('x');
var p = p+1;
return p;
}

function otherFunction(){
var q = document.getElementByID('Element').myMethod();
alert(q);
}

Итак, яне могу заставить это работать.Он постоянно говорит, что myMethod() - это undefined, а не функция.

Ответы [ 2 ]

4 голосов
/ 17 сентября 2011

Если вы хотите, чтобы myMethod был доступен для элементов, вам нужно добавить его к элементам ' prototype .

Element.prototype.myMethod = myMethod;

Концепция prototype большая, но это сводится к тому, что экземпляры функций имеют функцию, доступную способом, который вы описываете как «как объект».

В этом случае любой элемент на странице является экземпляром Element функция.Поэтому для любого элемента будет доступно .myMethod, которое вы можете вызвать.(Element - это функция, хотя вы на самом деле с этим не работаете - экземпляры доступны, потому что вы помещаете их туда в HTML, поэтому вы обходите, используя Element.)

Во-вторых, если у вас есть var p, тогда другой var p не имеет особого смысла.Просто используйте p = p + 1 или p++ (ярлык для добавления одного).

1 голос
/ 17 сентября 2011
function myMethod(element){
    var p = element.getAttribute('x');
    var p = p+1;
    return p;
}

function otherFunction(){
    var q = myMethod(document.getElementByID('Element'));
    alert(q);
}

Очевидно, что было бы лучше не объявлять их в глобальной области видимости, но в основном это то, что javascript ищет myMethod(), который является элементом выбранного вами элемента DOM, но вы фактически объявилифункция стоит отдельно.

Другой вариант - добавить метод через наследование прототипа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...