Javascript中的类方法

时间:2011-04-10 02:49:37

标签: javascript oop

我正在尝试学习如何将基本的面向对象概念应用于Javascript。在这里,我只想创建一个类方法,然后在单击<input>元素时从外部调用该方法:

<html>
<head>
<script type="text/javascript">

var Foo = function()
{

}

Foo.prototype.bar = function() { alert("blah"); }

</script>
</head>

<body>
<input type="submit" onclick = "Foo.bar()">
</body>
</html>

这不起作用。 Firefox提供错误错误:Foo.bar is not a function

但是,如果我直接拨打Foo(),然后从Foo内拨打this.bar(),则可以正常使用。为什么我无法在外部调用Foo.bar()

3 个答案:

答案 0 :(得分:6)

我认为你混淆了所谓的实例方法类方法

prototype用于创建实例方法,它们属于prototypenew关键字一起使用时创建的对象:

var foo = new Foo();
foo.bar(); // Will work

我不确定这是你想要的。您更有可能只想将静态类方法添加到Foo

var Foo = {};
Foo.bar = function () { alert('blah'); };
Foo.bar(); // Will work

答案 1 :(得分:1)

而不是Foo.prototype.bar...只使用Foo.bar = function() {...},这只会在bar函数对象上添加Foo成员。

要访问任何prototypethis.*成员,您首先需要一个实例:new Foo().bar()

答案 2 :(得分:1)

几年前我写的解释说;它解释了JavaScript类结构的细节:

http://www.htmlgoodies.com/primers/jsp/article.php/3600451/Javascript-Basics-Part-8.htm