Javascript没有构造函数,请记住javascript基于原型。这是“构造”的一个例子,你可以创建
function Example (firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
Example.prototype.getFullname = function() {
return this.firstname + ' ' + this.lastname;
}
如果你想创建一个构造函数,你必须调用它实例化功能之后。
但是,这是一个更好的结构,你可以使用。我只推荐你需要构造函数和私有函数。否则,用原型声明的方法使用简单的结构,可以获得更好的性能。
var MyObject = (function() {
// Constructor
function MyObject (foo) {
this._foo = foo;
}
function privateFun (prefix) {
return prefix + this._foo;
}
MyObject.prototype.publicFun = function() {
return privateFun.call(this, '>>');
}
return MyObject;
})();
var myObject = new MyObject('bar');
有了这段代码,你有一个构造函数,但它是一个“私有”函数,所以在实例化对象后你不能覆盖它。
在这里,我有一个链接,我创建测试型动物结构: https://plnkr.co/edit/qzgWVZlnIFnWl0MoUe5n?p=preview
结果:
测试1:〜15K(私人功能) - 仅建议,如果你想/需要一个私人函数
测试2:〜38k(带私有函数) - 不推荐,它返回一个非常糟糕的对象。
测试3:〜8K(没有私有函数) - 推荐,它具有最佳的性能,但是你不能创建一个私有函数,这意味着,任何人都可以调用任何功能:S
[为什么不可能改变构造的可能的复制函数原型?](http://stackoverflow.com/questions/9267157/why-is-it-impossible-to-change-constructor-function-from-prototype) – AMACB
'obj.initalize()'? – Oriol
*我想实现的是在类实例化时调用的东西。*然后调用它。 –