Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавить метод у функцию (https://javascript.ru/forum/misc/56312-dobavit-metod-u-funkciyu.html)

rgba 09.06.2015 17:46

Добавить метод у функцию
 
Здравствуйте.
Для примера есть такой код:
<a href="#">Text 1</a>
<a href="#">Text 2</a>


$('a').on('click',myFunc);

function myFunc(){
	alert($(this).text());
	return;
};

function anotherFunc(){
	var a = // результат alert'а функции myFunc
}


Возможно ли каким-то образом получить значение alert'a функции myFunc из функции anotherFunc при условии, что нельзя рекдактировать код функции myFunc напрямую.
Я читал про прототипирование, про то, что функции в js это объекты, и им можно добавлять методы, но так и не понял, как мне получить желаемое.

sogoodweather 09.06.2015 18:13

нужно чтобы обе функции обращались к одному окружению.
<html>
<head>
</head>
<body>

<input id="i">
<button id="change" onclick="o.f1()">change</button>
<button id="show" onclick="o.f2()">show</button>

<script>

o={
 f1: function(){alert(this.state=i.value)},
 f2: function(){alert(this.state)}
}

</script>

</body>
</html>

sogoodweather 09.06.2015 18:23

возможен также вариант с сокрытием
<html>
<head>
</head>
<body>

<input id="i">
<button id="change" onclick="f1()">change</button>
<button id="show" onclick="f2()">show</button>

<script>

;(function(){
 var state
 f1=function(){alert(state=i.value)}
 f2=function(){alert(state)}
})()

</script>

</body>
</html>

В этом случае, посторонние программные объекты не смогут модифицировать переменную state.
А в простейшем случае, можно просто использовать window(global). Тогда Вы можете написать просто
<html>
<head>
</head>
<body>

<input id="i">
<button id="change" onclick="f1()">change</button>
<button id="show" onclick="f2()">show</button>

<script>


 f1=function(){alert(state=i.value)}
 f2=function(){alert(state)}

</script>

</body>
</html>

Это все суть одно и то же.


Часовой пояс GMT +3, время: 07:03.