У функции нет моего метода - PullRequest
3 голосов
/ 07 октября 2011

Я уже несколько часов ломаю голову над этим, и к настоящему времени я просмотрел около 30 онлайн-уроков.Насколько я могу судить, я не делаю ничего плохого, но все же у меня проблемы.У меня есть некоторый тестовый код:

TestPulse = function() {};
TestPulse.prototype.go = function() { alert('You just pulsed'); };
TestPulse.go();

Я также попробовал:

function TestPulse() {};
TestPulse.prototype.go = function() { alert('You just pulsed'); };
TestPulse.go();

Наконец сытый по горло, я просто скопировал код из нескольких учебных пособий по прототипированию и пространству имен по всему Интернету, и нетЧто бы я ни делал, я получаю следующую ошибку:

Uncaught TypeError: Функция объекта TestPulse () {} не имеет метода 'go'

Как я уже сказал, яя не уверен, что делаю что-то не так ... так что же здесь происходит?Когда я отлаживаю, я вижу объект-прототип, присоединенный к функции, с конструктором и всем, так что я знаю, что он там.Где проблема?Я не понимаю, как работает прототипирование?

Ответы [ 4 ]

6 голосов
/ 07 октября 2011

У вас нет экземпляра TestPulse ...

TestPulse = function() {};
TestPulse.prototype.go = function() { alert('You just pulsed'); };
new TestPulse().go();

http://jsfiddle.net/HYWPk/

5 голосов
/ 07 октября 2011

Вам нужно создать экземпляр вашего объекта TestPulse для доступа к методам прототипа на нем.

TestPulse = function() {};
TestPulse.prototype.go = function() { alert('You just pulsed'); };
var testPulse = new TestPulse();
testPulse.go();

http://jsfiddle.net/H2dnv/

2 голосов
/ 07 октября 2011

Попробуйте

var a = new TestPulse;
a.go();

или

TestPulse.prototype.go();
1 голос
/ 07 октября 2011

TestPulse - ваш (скажем так) класс. Вам нужно создать экземпляр из него.

var myObject = new TestPulse();
myObject.go();

Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...