2013-03-28 5 views
1

Im миграции мою систему из PHP в NodeJS, и у меня есть следующее сомнение:NodeJS: расширить класс и __construct метод

В PHP, у меня есть класс

class Users extends Groups { 
    function __construct(){ 
     parent::__construct(); 
     //do something 
    } 
} 

Но, как это сделать то же самое в Javascript/NodeJS (ExpressJS)? Я думаю, что это расширение, но как я определяю метод __construct? Каково имя метода, который будет вызываться в начале экземпляра класса, например, в PHP?

var utils = require('utils'); 
var Groups = require('./groups.js'); 
var Users = function(){ 
    //where is the __construct?? 
}; 
util.inherits(Users, Groups); 
+1

Пользователь ** s **, Группа ** s ** для названия класса - запах плохой дизайн. – moonwave99

+1

Я использовал пример, чтобы проиллюстрировать мой вопрос, у меня нет функции с этими именами - запах чрезмерной критики. –

+0

Я не хотел быть грубым или что-то вроде этого, извините за это - я просто утверждал, что иногда люди злоупотребляют занятиями и формируют их так же, как огромные библиотеки методов, а не как правильные модели - со всей вероятностью не ваш случай, я был просто ссылаясь на более широкую картину. – moonwave99

ответ

4

Существует не parent конструкция специально, так что до вас, чтобы каким-то образом вызвать родительский конструктор.

inherits добавляет super_ свойство это первый аргумент

Users.super_ = Groups; 

так что вы можете вызвать родительский конструктор так:

Users.super_.call(this); // Can pass arguments to function as more params. 

// OR 
Users.super_.apply(this, arguments); // Pass all arguments through. 

или вы можете также ссылаться на родительский конструктор непосредственно:

Groups.call(this); // Can pass arguments to function as more params. 

// OR 
Groups.apply(this, arguments); // Pass all arguments through.