Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по JavaScript

345
05 сентября 2009 года
vadim_k
312 / / 01.08.2006
Привет всем
вот такой вопрос

Есть JavaScript функция
<script type='text/javascript' src='test.js'></script>

Создаю на основе её объект(экземпляр класса если по аналогии с PHP)

 
Код:
var my_func=new test('',..,'');


внутри объекта my_func
есть различные функции(методы)


например

 
Код:
my_func.show();


вопрос как в этих методах узнать название объекта(экземпляра класса если по аналогии с PHP)

То есть мне нужно получить "my_func";

прошу прощение если что то назвал не правильными словами ...

Заранее спасибо..
536
05 сентября 2009 года
alex-kniaz
382 / / 07.08.2008
Подробнее. Как я понял, как узнать методу, как называется переменная создавшего его объекта?
345
05 сентября 2009 года
vadim_k
312 / / 01.08.2006
Наверное не так как внутри объекта узнать название переменной объекта.
536
05 сентября 2009 года
alex-kniaz
382 / / 07.08.2008
можно отвести для этот какое-либо свойство и в конструкторе передавть имя как параметр
345
05 сентября 2009 года
vadim_k
312 / / 01.08.2006
Спасибо за интерес к теме..
Эта мысль мне в голову тоже приходила,
но ведь хочется лучшего...
12
06 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Определить свой toString метод. К слову, он и в PHP не так давно появился.

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Тест</title>
</head>
<body>
    <script type="text/javascript">
        function TestClass() {var test = 'test';}
        TestClass.prototype.show = function()
        {
            alert(this);
        }
        TestClass.prototype.toString = function()
        {
            return 'TestClass';
        }

        var my_func = new TestClass();
        my_func.show();
        alert(my_func);
    </script>
</body>
</html>
345
06 сентября 2009 года
vadim_k
312 / / 01.08.2006
Наверное я не правильно объясняю что мне нужно.
Прошу прощения...

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Тест</title>
</head>
<body>
    <script type="text/javascript">
        function TestClass() {var test = 'test';}
        TestClass.prototype.show = function()
        {
            alert(this);
        }
        TestClass.prototype.toString = function()
        {
            return 'TestClass';
        }

        var my_func = new TestClass();
        my_func.show();
        alert(my_func);


        var my_func_new = new TestClass();
        my_func_new.show();
        alert(my_func_new);




    </script>
</body>
</html>



Добавил в ваш приер создание ещё одного объекта

[COLOR="Magenta"]
var my_func_new = new TestClass();
my_func_new.show();
alert(my_func_new);

[/COLOR]
В результате оба все alert() выводят "TestClass"
А мне нужно чтобы выводилось в
первом случае my_func
в втором случае my_func_new
тоесть название экземпляра объкта
353
06 сентября 2009 года
Nixus
840 / / 04.01.2007
Никак в общем случае, но можно изголиться:

[HTML]<script type="text/javascript">
function TestClass( name ) {
this.name = name;
}
TestClass.prototype.show = function() {
alert( this.name );
}
TestClass.prototype.toString = function() {
return this.name;
}

var my_func = new TestClass( 'my_func' );
my_func.show();
alert( my_func );


var my_func_new = new TestClass( 'my_func_new' );
my_func_new.show();
alert( my_func_new );
</script>[/HTML]
12
06 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: vadim_k

В результате оба все alert() выводят "TestClass"
А мне нужно чтобы выводилось в
первом случае my_func
в втором случае my_func_new
тоесть название экземпляра объкта


Ну вообще то это невозможно и в случае PHP. Я вообще слабо представляю, в каком случае это нужно вообще. Ты создал экземпляр класса, он находится в какой то переменной которую ты и создал. Поэтому ты знаешь имя этой переменной. А сейчас у тебя какое извращение. Ибо для того, что бы вызвать метод show() тебе нужно знать имя переменной, в которой храниться экземпляр класса, т.е. вызов выглядит как my_func.show() и my_func_new.show(). Выполнить такой вызов можно только в случае, если имя переменной известно, так зачем же изобретать какой то метод, который вернет имя этой переменной? Поэтому я совершенно не вижу практического случая, когда это нужно. Собственно именно поэтому ни какого механизма в языке для этого дела и нет.

12
06 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Nixus
Никак в общем случае, но можно изголиться:


Можно, но какой смысл? Что бы выполнить вызов my_func.show() и my_func_new.show() (и в случае alert-ов) тебе нужно знать имя переменной, если ты не знаешь имя, то и вызов выполнить не можешь. Если же ты знаешь имя переменной, то смысл вызова пропадает, т.к. вызов вернет тебе информацию которую ты и так знаешь.

Имхо, в таком контексте это полная бессмыслица.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог