Вызов метода из метода
function Class(){
this.qqq = function(){
...
}
this.ggg = function(){
...
this.qqq(); // не работает такой способ вызова
}
}
Как можно вызвать метод из другова метода? |
Цитата:
function Class(){
this.a = function(){
alert('все работает');
}
this.b = function(){
this.a();
}
}
|
TypeError: this.a is not a function
неработает такой вызов, незнаю почему!! |
Как же не работает?
function Class(){
this.qqq = function(){
alert(10);
}
this.ggg = function(){
this.qqq(); // не работает такой способ вызова
}
}
var t = new Class();
t.ggg();
|
Протестировал вот это в отдельном файле, сработало ...
А в моём сценарии не хочет запускаться, фаер баг ошибок не отловил до этого момента |
Цитата:
<html>
<body>
<script type="text/javascript">
function Class(){
this.a = function(){
alert('все работает');
}
this.b = function(){
this.a();
}
}
var c = new Class();
c.b();
</script>
</body>
</html>
|
Что может значить ошибка такого типа "TypeError: this.a is not a function"??
|
qwermjk,
Ну переведи, там же ясно написано this.a не является функцией. |
Как это перевести, я знаю, а почему не работает, вот это вопрос!
|
Мы тут не телепат, я не знаю что у вас там в коде не так, что выдаёт ошибку.
Хотя могу попробовать свои экстрасенсорные способности: наверное this это объект window, по этому и нет у него метода a. |
я запускаю метод b() через setTimeout, и из за этого не работает, а если запускаю без него всё работает!
но нужна задержка в полторы секунды, как быть? setTimeout(c.b,1500); |
Так правильно:
function Class(){
this.qqq = function(){
alert("А не как хочется");
}
this.ggg = function(){
this.qqq(); // не работает такой способ вызова
}
}
var qqq = function(){
alert("Работает так как и должно!");
}
var t = new Class();
setTimeout(t.ggg, 1500);
|
function Class(){
this.a = function(){
alert('все работает');
}
this.b = function(){
this.a();
}
}
var c = new Class();
setTimeout(c.b,1500);
Попробуйте сами этот код! |
Почему так оно сработало???
|
Почему оно вызвало функцию а не метод? я понял что с этим как то связан setTimeout и this
|
Потому, что вызов идёт от объекта window, то есть this там не ваш Class, а window.
function Class(){
this.qqq = function(){
alert("А теперь как надо и как хочется");
}
this.ggg = function(){
this.qqq(); // не работает такой способ вызова
}
}
var qqq = function(){
alert("Не запуститься");
}
setTimeout(function(){
var t = new Class();
t.ggg();
}, 1500);
|
Цитата:
|
Skipp,
Спасибо большое!!! я теперь понял ..
...
this.filter = 'div';
this.qqq = 123;
...
this.ttt = function(){
$(this.filter).each(function(){
alert(this.qqq)
});
}
Можно как нибудь такой случай обойти?? без использования объевляния дополнительной переменной |
Magneto,
не пытаясь что то делать, уровень знаний останется на месте |
Ээмм вот так?:)
this.ttt = function(){
$("div").each(function(){
alert(123)
});
}
|
Skipp,
смешно конечно! Но эти значения я указал для примера, мне нужно чтобы внутрь можно было свойство запихать а не просто текст!!! |
Тогда вроде всё правильно или же я не понимаю, что надо.
|
$(this.filter).each(function(){
alert(this.a); // я пытаюсь достать текст из свойства 'a', этот вариант не работает из за функции у each, приходится создавать переменную и в неё уже это пихать! мож есть способ чтобы её не создавать?
});
var d = this.a;
$(this.filter).each(function(){
alert(d); // вот этот вариант работает, а хотелось бы без создания дополнительной переменной
});
|
Skipp,
Спасибо что помог, это так дополнительный вопрос, у меня всё работает =) |
что мешает тестить скрипт в НОРМАЛЬНОМ отладчике хрома и сделать в методе b так
this.b = function(){
console.log(this)
}
и поизучать обьект this посмотреть его свойства и.т.п. что мешает??? |
var d то же самое что и this.d
var это не создание переменной, а установка области видимости.
var d = this.a;
$(this.filter).each(function(){
alert(this.d); // вот этот вариант работает, а хотелось бы без создания дополнительной переменной
});
|
| Часовой пояс GMT +3, время: 21:49. |