Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Как из метода сделать свойство? (Innuendo108)
Author Message
Innuendo108
Заглянувший



Joined: 06 Jun 2010
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Sun Jun 06, 2010 8:48 am (написано за 4 минуты 28 секунд)
   Post subject: Как из метода сделать свойство?
Reply with quote

Есть вот такой "класс" :
Code (JavaScript): скопировать код в буфер обмена
var obj = function() {
        // переменные
        var sin = ""; // входная строка
        var sout = "xxx"; // выходная строка
       
        this.convert = function() {
                sout = "#"+sin+"#";
        }

        this.setSettings = function(str) {
                sin = str;
        }
       
        this.out = function() {
                return sout;
        };
};
t = new obj();
obj.setSettings("test");
obj.convert();
alert(obj.out()); // #test#
 
Я хочу из метода out() сделать свойство out
попробовал заменить метод out на такое:
Code (JavaScript): скопировать код в буфер обмена
        this.out = (function(x) {
                return x;
        })(sout);
//...
//...
//...
//
alert(obj.out); //
 
я специально начальному значению выходной строки даю "xxx". Так я вижу, что свойство out видит переменную sout, но почему-то не измененную.
Почему так происходить?
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sun Jun 06, 2010 9:34 am (спустя 46 минут; написано за 1 минуту 54 секунды)
   Post subject:
Reply with quote

Quote:
Я хочу из метода out() сделать свойство out
странное желание. out в любом случае это свойство объекта obj, просто в нем может храниться ссылка как на объект типа Function, так и на объект типа String.

хотелось бы узнать в чем смысл подобных хотений.
Back to top
View user's profile Send private message
Innuendo108
Заглянувший



Joined: 06 Jun 2010
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Sun Jun 06, 2010 9:48 am (спустя 14 минут; написано за 1 минуту 16 секунд)
   Post subject:
Reply with quote

я понимаю, что смысла нет, но просто дело в том, что случайно решил попробовать сделать как свойство, у меня не получилось, а теперь не могу успокоиться, пока не пойму как сделать.

Вероятнее всего, получив ответ, я всё равно оставлю как метод, и буду вызывать out(), но узнать как сделать метод хочется
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sun Jun 06, 2010 11:27 am (спустя 1 час 38 минут; написано за 3 минуты 10 секунд)
   Post subject:
Reply with quote

Quote:
попробовать сделать как свойство
это что, попытки сделать аналог магических геттеров-сеттеров в PHP?

тупо в лоб, как из метода сделать свойство:
Code (JavaScript): скопировать код в буфер обмена
var a= {
        a : 'abc',
        b : function (x) {
                return x*2;
        }
}

alert(a.a);
alert(a.b(2));
a.b= 3;
alert(a.b);
Back to top
View user's profile Send private message
Innuendo108
Заглянувший



Joined: 06 Jun 2010
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Sun Jun 06, 2010 1:04 pm (спустя 1 час 36 минут; написано за 49 секунд)
   Post subject:
Reply with quote

не, ну это смешно
это просто ты назначил b - метод, а потом переназначил на свойство (числовое значение)..
а как сделать чтоб результат метода получать как свойство?
Back to top
View user's profile Send private message
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9986
   поощрить/наказать


PostPosted: Sun Jun 06, 2010 1:30 pm (спустя 26 минут; написано за 13 секунд)
   Post subject:
Reply with quote


!

Innuendo108, forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html — на форуме принято обращение «на Вы».
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Sun Jun 06, 2010 2:46 pm (спустя 1 час 16 минут; написано за 45 секунд)
   Post subject:
Reply with quote

Innuendo108,
Quote:
а как сделать чтоб результат метода получать как свойство?
Никак. В JavaScript нет перегрузки свойств. Но справедливости ради замечу, в некоторых реализациях языка, геттеры и сеттеры все же имеются.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon Jun 07, 2010 2:59 am (спустя 12 часов 12 минут; написано за 31 секунду)
   Post subject:
Reply with quote

Ок. Ясно, всем спасибо.

bæv
Приму к сведению, не знал.
Back to top
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9986
   поощрить/наказать


PostPosted: Tue Jun 29, 2010 6:27 pm (спустя 22 дня 15 часов 27 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «спам»,
расположенную в форуме Мусоропровод (29 Июня 2010, 19:27).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML