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');
С помощью этого кода у вас есть конструктор, но это «частная» функция, так что вы не можете перезаписать его после создания экземпляра объекта.
Здесь у меня есть ссылка создать тестирование Differents структуру: https://plnkr.co/edit/qzgWVZlnIFnWl0MoUe5n?p=preview
Результат:
Тест 1: ~ 15к (с частной функцией) - рекомендуется, только если вы хотите/нужен частный function
Тест 2: ~ 38k (с частной функцией) - Не рекомендуется, он возвращает объект, который действительно плох.
Тест 3: ~ 8k (без частной функции) - Рекомендуется, он имеет лучшую производительность, но вы не можете создать частную функцию, а значит, любой может вызвать любую функцию: S
Возможный дубликат [Почему нельзя изменить конструктор функция из прототипа?] (http://stackoverflow.com/questions/9267157/why-is-it-impossible-to-change-constructor-function-from-prototype) – AMACB
'obj.initalize()'? – Oriol
* То, что я хотел бы достичь, вызывает вызов при создании экземпляра класса. * Затем назовите его. –