我正在尝试创建一个具有属性和函数的模块,可以像验证器对象一样使用有效的方法,如果验证器成功,则返回true。
所以我制作了这个文件
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
两个问题:
为什么构造函数最初没有定义有效变量? 为什么有效变量可以由构建方法定义???
我不明白javascript如何与类一起工作......
thnx all!
答案 0 :(得分:2)
该函数在能够设置this.init(pub)
之前返回this.valid
。您应该首先在构造函数中定义this.valid
。
答案 1 :(得分:1)
你正在那里跳过其他人。逻辑是如果params通过,使用它们启动,否则设置两个"没有参数"属性:
function Machine(params)
{
// this is the constructor
if(params){
var pub=params;
return this.init(pub);
}
else {
this.obj_params = 'null';
this.valid = 'Not Valid';
}
};
答案 2 :(得分:0)
嗯,第一
Publicacion.prototype.
应该是
Machine.prototype
和 Publicacion.prototype.buildPublish
应该是
Machine.buildMachine
但这可能不是你的意思。
有效的返回false的简单原因是你没有定义它 - 你之前从函数返回。
只需更改顺序:
function Machine(params)
this.obj_params = 'null';
this.valid = 'Not Valid';
{
// this is the constructor
if(params){
var pub=params;
return this.init(pub);
}
};