Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ссылки в javascript (https://javascript.ru/forum/misc/8905-ssylki-v-javascript.html)

mycoding 20.04.2010 09:51

Ссылки в javascript
 
Что-то так и не понял как в функцию передать ссылку на сам объект и изменить его внутри функции.
И есть ли такое в JS

Skipp 20.04.2010 09:55

<input type="text" value="Текст" onclick="inp(this)">


function inp(obj)
{
     alert(obj.value);
     obj.value="text";
     alert(obj.value);
}

mycoding 20.04.2010 11:31

Я имел в виду например вот так
function change(x)
{
x=11;
}
x=10;

change(x);
alert(x);

Т.е. выводиться должно 11, а не 10 как сейчас, как это сделать?

Kolyaj 20.04.2010 11:39

Никак.

mycoding 20.04.2010 11:49

А что такое неужели совсем ссылок нет?

Kolyaj 20.04.2010 12:11

"Неужели" слитно пишется.

А зачем они? Сайд эффекты плодить?

mycoding 20.04.2010 12:40

А что такое сайд эффекты? )

Kolyaj 20.04.2010 12:53

http://www.linux.org.ru/forum/develo...C2C6A5CD13AEE6 например.

mycoding,
если вы не научитесь пользоваться поиском, вы далеко не уедете.

Nekromancer 20.04.2010 23:35

Цитата:

Т.е. выводиться должно 11, а не 10 как сейчас, как это сделать?
Обязано просто!

e1f 21.04.2010 12:01

Цитата:

Сообщение от Nekromancer (Сообщение 52402)
Обязано просто!

Да не вопрос :)
function change() {
    window.x=11;
}

x=10;
 
change(x);
alert(x);


Меняет? Меняет :)

Nekromancer 21.04.2010 12:04

Цитата:

Сообщение от e1f (Сообщение 52458)
Да не вопрос :)
function change() {
    window.x=11;
}

x=10;
 
change(x);
alert(x);


Меняет? Меняет :)

Это сарказм был)) А про замыкания я знаю)

function change() {
    x=11;
}
var x=10;
change();
alert(x);

Так лучше )

Kolyaj 22.04.2010 09:32

Цитата:

Сообщение от Nekromancer
А про замыкания я знаю)

А тут нет замыканий :)

Nekromancer 22.04.2010 09:43

Угу, тут есть функция которая видит весь контекст.. почему бы не назвать её замыканием?
var closure = function(){
change();
}
function change(){
x = 11;
}
var x = 10;


Вот так вот уже и замыкание..

Kolyaj 22.04.2010 12:02

Цитата:

Сообщение от Nekromancer
Угу, тут есть функция которая видит весь контекст.. почему бы не назвать её замыканием?

Любой код видит глобальные переменные. Давайте любой код называть замыканием.

Nekromancer 22.04.2010 12:21

Имеется введу замыкание не из-за глобальных переменных, а из-за специфики такой (function label) записи функци.. если функция будет анонимная, то она не увидит переменную "ниже" себя в коде.
Чем это не замыкание, использовать именованную функцию для работы со всем контекстом?..
давайте рассмотрим пример..
(function(){
//...
function named(){
 return x;
}
var anonimus = function(){
 alert(named());
}
var x = 'чё то там';
//...
anonimus();
}());


Это конечно извращение, реальную задачу сейчас трудно придумать, да может оно и не нужно вообще, но имхо, это замыкание.

Kolyaj 22.04.2010 12:44

Цитата:

Сообщение от Nekromancer
если функция будет анонимная, то она не увидит переменную "ниже" себя в коде.

Разгребайте кашу в голове http://dmitrysoshnikov.com/ecmascrip...r-5-functions/

Ну и заодно http://dmitrysoshnikov.com/ecmascrip...er-6-closures/

Nekromancer 22.04.2010 12:46

Читал я это.

Kolyaj 22.04.2010 12:51

Тогда вы должны понимать бредовость процитированной мной фразы.

Nekromancer 22.04.2010 13:09

эээ.. ну был не прав, почему то думал, что scope контекста запоминается такой, какой был в момент объявления..

micscr 22.04.2010 14:47

С замыканиями нужно связываться очень аккуратно и с солидной js подготовкой, а то можно получить Замыкание головного мозга :) .

Nekromancer 22.04.2010 15:00

:) А вот про подготовку не надо, уже достаточно давно работаю с JavaScript.


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