Javascript函数在被调用之前执行
问题描述:
我有一个javascript函数,抱怨它的正文中的调用在调用之前不是函数。有人能帮我解释一下吗?Javascript函数在被调用之前执行
上下文:我正在使用Meteor和Collection2,我想使用一个函数在我的模式的不同属性上重用。准确地说,我想做到以下几点:
function foo (autoVal, self){
if(something){
return autoVal;
}else{
return self.unset();
}
}
export const myCollection = new Mongo.Collection('myCollection');
const Schema = new SimpleSchema({
my_field:{
type:Boolean,
autoValue: foo(false,this),
}
});
myCollection.attachSchema(Schema);
当我保存这个和运行流星,没有启动,并且我收到以下错误消息:
TypeError: self.unset is not a function
我觉得我我错过了如何调用或执行JavaScript函数,有人能指出为什么会发生这种情况吗?
答
试试这个:
function foo (autoVal, self){
if(something){
return autoVal;
}else{
return self.unset();
}
}
export const myCollection = new Mongo.Collection('myCollection');
const Schema = new SimpleSchema({
my_field:{
type:Boolean,
autoValue() {
return foo(false, this);
}
}
});
myCollection.attachSchema(Schema);
+0
工作的非常感谢!我会很快接受答案,至少需要7分钟才能做到这一点 – EugVal
没有足够的有重现您有任何问题。你应该检查出http://stackoverflow.com/help/how-to-ask和[MCVE] – pvg
找出当执行这个代码时'this'是什么'autoValue:foo(false,this);' - 哦,并认识到foo是在调用'new SimpleSchema'之前执行的(也就是说,这不是有效的javascript,看起来像''foo(false,this)'末尾的';'应该不存在 –
'this'不是你要找的这个'这个' – godfrzero