【发布时间】:2016-12-01 05:49:44
【问题描述】:
我有一个 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);
当我保存并运行 Meteor 时,它没有启动并且我收到以下错误消息:
TypeError: self.unset is not a function
我觉得我缺少关于如何调用或执行 javascript 函数的一些内容,有人可以指出为什么会发生这种情况吗?
【问题讨论】:
-
那里不足以重现您遇到的任何问题。你应该看看stackoverflow.com/help/how-to-ask和minimal reproducible example
-
弄清楚
this是什么时候执行此代码autoValue: foo(false,this);- 哦,并意识到 foo 在调用new SimpleSchema之前执行(这也是无效的javascript,看起来像@987654330 @ 在foo(false, this);的末尾根本不应该存在 -
this不是您要查找的this。 -
确实是
this的上下文问题,谢谢!
标签: javascript function meteor simple-schema meteor-collection2