Вопрос по JavaScript
вот такой вопрос
Есть JavaScript функция
<script type='text/javascript' src='test.js'></script>
Создаю на основе её объект(экземпляр класса если по аналогии с PHP)
внутри объекта my_func
есть различные функции(методы)
например
вопрос как в этих методах узнать название объекта(экземпляра класса если по аналогии с PHP)
То есть мне нужно получить "my_func";
прошу прощение если что то назвал не правильными словами ...
Заранее спасибо..
Эта мысль мне в голову тоже приходила,
но ведь хочется лучшего...
<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>
Прошу прощения...
<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
тоесть название экземпляра объкта
[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]
В результате оба все alert() выводят "TestClass"
А мне нужно чтобы выводилось в
первом случае my_func
в втором случае my_func_new
тоесть название экземпляра объкта
Ну вообще то это невозможно и в случае PHP. Я вообще слабо представляю, в каком случае это нужно вообще. Ты создал экземпляр класса, он находится в какой то переменной которую ты и создал. Поэтому ты знаешь имя этой переменной. А сейчас у тебя какое извращение. Ибо для того, что бы вызвать метод show() тебе нужно знать имя переменной, в которой храниться экземпляр класса, т.е. вызов выглядит как my_func.show() и my_func_new.show(). Выполнить такой вызов можно только в случае, если имя переменной известно, так зачем же изобретать какой то метод, который вернет имя этой переменной? Поэтому я совершенно не вижу практического случая, когда это нужно. Собственно именно поэтому ни какого механизма в языке для этого дела и нет.
Можно, но какой смысл? Что бы выполнить вызов my_func.show() и my_func_new.show() (и в случае alert-ов) тебе нужно знать имя переменной, если ты не знаешь имя, то и вызов выполнить не можешь. Если же ты знаешь имя переменной, то смысл вызова пропадает, т.к. вызов вернет тебе информацию которую ты и так знаешь.
Имхо, в таком контексте это полная бессмыслица.