Javascript中的类方法

Cha*_*l72 4 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>
Run Code Online (Sandbox Code Playgroud)

这不起作用.Firefox给出错误错误:Foo.bar is not a function

但是,如果我Foo()直接打电话,然后从Foo我打电话this.bar(),它工作正常.为什么我无法在Foo.bar()外部调用?

Dav*_*ang 6

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

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

var foo = new Foo();
foo.bar(); // Will work
Run Code Online (Sandbox Code Playgroud)

我不确定这是你想要的.更有可能的是,你只是想添加一个静态类方法Foo:

var Foo = {};
Foo.bar = function () { alert('blah'); };
Foo.bar(); // Will work
Run Code Online (Sandbox Code Playgroud)