我正在尝试学习面向对象的javascript。为什么这个对象方法的调用不起作用(没有警报)?
当您点击链接时,应该会出现一条警告,说明Bob的年龄。
如果链接消失,这里是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 Web Developer Console声明
Uncaught ReferenceError: bob is not defined
但是,我认为我使用bob
定义了var bob = new guy("Bob");
。
答案 0 :(得分:6)
答案 1 :(得分:2)
您错过了}
上的结束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()
答案 2 :(得分:0)
当我跑步时你编写了一条
的消息bob is not defined
出现在控制台上。我认为这是一个JSFiddle的怪癖,因为当我改变东西以便在Javascript端而不是在HTML中设置onclick时,事情就起作用了。
<a href="#" id="foo">eh</a>
document.getElementById("foo").onclick = function(){ bob.say(); }