Ich habe eine Javascript-Funktion, die sich beschweren, dass ein Anruf in seinem Körper keine Funktion ist, bevor es aufgerufen wird. Könnte mir bitte jemand helfen, das zu erklären?Javascript-Funktion wird ausgeführt, bevor es aufgerufen wird
Kontext: Ich verwende Meteor und Collection2 und ich möchte eine Funktion für die Wiederverwendung bei verschiedenen Attributen meiner Schemas verwenden. Gerade, würde Ich mag folgendes tun:
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);
Wenn ich diese speichern und ausführen Meteor, es nicht starten und ich erhalte die folgende Fehlermeldung:
TypeError: self.unset is not a function
Ich fühle, dass ich fehlt etwas darüber, wie JavaScript-Funktionen aufgerufen oder ausgeführt werden, kann jemand darauf hinweisen, warum passiert das?
Es ist nicht genug, es zu reproduzieren, was Problem Sie haben. Sie sollten http://stackoverflow.com/help/how-to-ask und [MCVE] – pvg
herausfinden, was 'das' ist, wenn dieser Code ausgeführt wird' autoValue: foo (false, this); '- oh, und erkennen, dass foo ausgeführt wird, bevor 'neues SimpleSchema' aufgerufen wird (auch das ist kein gültiges Javascript, scheint wie das'; 'am Ende von' foo (false, this); 'sollte überhaupt nicht da sein –
' this' ist nicht das 'this', das du suchst. – godfrzero