Javascript中的类方法

Class methods in Javascript

本文关键字:类方法 Javascript      更新时间:2023-09-26

我正在尝试学习如何将基本的面向对象概念应用于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给出错误error: Foo.bar is not a function

然而,如果我直接调用Foo(),然后从Foo内调用this.bar(),它工作得很好。为什么我不能在外部调用Foo.bar() ?

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

prototype用于创建实例方法,这些方法属于与new关键字一起使用时从prototype创建的对象:

var foo = new Foo();
foo.bar(); // Will work
我不确定这是你想要的。更有可能的是,您只是想在Foo:中添加一个静态类方法
var Foo = {};
Foo.bar = function () { alert('blah'); };
Foo.bar(); // Will work

Foo.bar = function() {...}代替Foo.prototype.bar...,这只会在Foo函数对象上添加一个bar成员。

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

我几年前写的解释;它解释了JavaScript类结构的来龙去脉:

http://www.htmlgoodies.com/primers/jsp/article.php/3600451/javascript -基础-部分- 8. - htm