Почему мой вызов JavaScript для метода объекта не работает? - PullRequest
2 голосов
/ 15 марта 2012

Я пытаюсь изучить объектно-ориентированный JavaScript. Почему этот вызов метода объекта не работает (без предупреждения)?

http://jsfiddle.net/hxPqJ/2/

Когда вы нажимаете на ссылку, должно появиться предупреждение о том, сколько лет Бобу.

В случае, если ссылка исчезнет, ​​вот HTML:

<a href="#" onclick="bob.say()">eh</a>​

и вот мой javascript.

function guy(person_name) {
  this.name = person_name;
  this.age = 32;
  this.say = function() {
    alert(this.name + " is " + this.age);
    return false;
  }
}

  var bob = new guy("Bob");

Состояния консоли веб-разработчика Chrome

Uncaught ReferenceError: bob is not defined

Однако, я думаю, я определил bob с var bob = new guy("Bob");.

Ответы [ 3 ]

6 голосов
/ 15 марта 2012

Вам нужно выбрать один из параметров no wrap на левой панели jsFiddle.

В противном случае jsFiddle оборачивает ваш код в обработчик событий, а плохой bob застревает в качестве локальной переменной.

Демо

2 голосов
/ 15 марта 2012

Вам не хватает закрытия } на say().

Кроме того, вы не должны возвращать значение из функции конструктора объекта. Для этого просто установите переменную bob на false.

function Guy(person_name) {
  this.name = person_name;
  this.age = 32;
  this.say = function() {
    alert(this.name + " is " + this.age);};
}

var bob = new Guy("Bob");

Обратите внимание также, что соглашения JavaScript обычно указывают на то, что конструктор объекта должен быть заглавным, как function Guy()

Вот обновленная скрипка.

0 голосов
/ 15 марта 2012

Когда я запускаю вас, введите код

bob is not defined

появился на консоли. Я думаю, что это причуда JSFiddle, так как все работало, когда я менял вещи, чтобы установить клик на стороне Javascript вместо HTML.

<a href="#" id="foo">eh</a>

document.getElementById("foo").onclick = function(){ bob.say(); }

http://jsfiddle.net/hxPqJ/6/

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