Как вы вызываете функцию запуска?
Это должно работать ( новый ключ)
var o = new Request(destination, stay_open);
o.start();
Если вы прямо называете его как Request.prototype.start()
, this
будет ссылаться на глобальный контекст (window
в браузерах).
Кроме того, если this
не определено, это приводит к ошибке. Выражение if не оценивается как ложное.
Обновление : this
объект не устанавливается на основе объявления, но вызывает . Это означает, что если вы присваиваете свойство функции такой переменной, как x = o.start
, и вызываете x()
, this
внутри start больше не ссылается на o
. Это то, что происходит, когда вы делаете setTimeout
. Чтобы заставить это работать, сделайте это вместо:
var o = new Request(...);
setTimeout(function() { o.start(); }, 1000);