Я пытаюсь создать модуль, у которого есть свойства и функции, которые могут использоваться как объект валидатора, который действителен для всех объектов внутри, с допустимым методом, возвращающим true, если успех проверки достоверности.Javascript Классы с конструктором init
так я сделать этот файл,
function Machine(params)
{
// this is the constructor
if(params){
var pub=params;
return this.init(pub);
}
this.obj_params = 'null';
this.valid = 'Not Valid';
};
Publicacion.prototype.init = function(objConfig){
console.info('Init Success!')
this.buildMachine(objConfig);
return true
};
Publicacion.prototype.buildPublish = function(objConfig){
console.info('Builded!');
//this.valid='success'; // when uncommited, the object this.valid appears
return true;
};
module.exports=Machine;
и это консоль
> var Machine=require('./Machine')
> undefined
> var machinegun=new Machine();
> Init Success!
> Builded!
> undefined
> machinegun.valid
> undefined
две проблемы:
- Когда я пытаюсь получить доступ к "machinegun.valid" это возвращает me a undefined
- Когда я использую метод построения для определения допустимого, Появится var valid.
Почему конструктор не определил действительную переменную сначала ?? Почему допустимая переменная может быть определена методом сборки ???
я не понимаю, как работает Java-классы ...
Thnx все!
Как бы это вызов ('новая машина()') вызовите 'init' метод (и журнал 'Init Success!'), Если не заданы 'params' (' undefined')? – Bergi
[JavaScript не имеет классов] (http://stackoverflow.com/a/13418980/1048572). Конструкторы по-прежнему являются простыми функциями, и когда вы «возвращаетесь» от них, они выходят без выполнения дополнительного кода (здесь, создавая свойства). Просто удалите 'return'. – Bergi