我知道这是可行的:
function Foo() {};
Foo.prototype.talk = function () {
alert('hello~\n');
};
var a = new Foo;
a.talk(); // 'hello~\n'
但如果我想打电话
Foo.talk() // this will not work
Foo.prototype.talk() // this works correctly
我找到了一些制作Foo的方法。谈工作,
Foo。__proto__ = Foo.prototype
Foo。talk = Foo.prototype.talk
还有别的办法吗?我不知道这样做是否正确。在JavaScript代码中使用类方法还是静态方法?
在你的例子中,如果你想要Foo.talk():
function Foo() {};
// But use Foo.talk would be inefficient
Foo.talk = function () {
alert('hello~\n');
};
Foo.talk(); // 'hello~\n'
但这是一种低效的实现方式,使用原型更好。
另一种方式,My way定义为静态类:
var Foo = new function() {
this.talk = function () {
alert('hello~\n');
};
};
Foo.talk(); // 'hello~\n'
上面的静态类不需要使用原型,因为它只会被构造一次作为静态使用。
https://github.com/yidas/js-design-patterns/tree/master/class