2016-11-27 4 views
-4

Entschuldigen. Ich bin ziemlich sicher, dass dies eine eher Anfängerfrage ist; aber hier geht es! Danke für irgendwelche Hinweise im Voraus :)Wie überprüfe ich, ob eine Eigenschaft in einem Objekt existiert?

Ich habe die unten stehende Funktion in meiner App, und die App läuft jetzt den Fehler "TypeError: parameter.includes ist keine Funktion." Was bedeutet dieser Fehler? Erfordert die if-Anweisung eine Funktion? Wie sollte ich diese Bedingung festlegen?

function handleApiAiAction(sender, action, responseText, contexts, parameters, response) { 
    switch (action) { 
     case "job-search": 
      console.log(parameters); 
      if (parameters.includes("quickreply")) { 
       console.log("it worked"); 
      } else { 
       let replies = response.result.fulfillment.messages[0].replies; 
       let title = response.result.fulfillment.messages[0].title; 
       sendQuickReply(sender, title, replies); 
       console.log("it didn't work"); 
      } 
      break; 
     default: 
      //unhandled action, just send back the text 
      sendTextMessage(sender, responseText); 
    } 
} 

console.log ('parameter') gibt mir:

{ quickreply: 'quickreply' } 

[einige Änderungen :)]

+1

Lesen Sie den Fehler, das Objekt hat keine Funktion 'includes' ... vielleicht meintest du' parameters.quickreply.includes ("quickreply") 'oder' "quickreply" in Parameter'? – Li357

Antwort

1

{ quickreply: 'quickreply' } das Objekt nicht Mitglied enthält includes: function() {} (noch hat die Object.prototype).

Was es sieht aus wie Sie versuchen wird, überprüfen zu tun, wenn das Objekt die Eigenschaft enthält quickreply, so sollten Sie etwas tun:

if('quickreply' in parameters) { 
    // do stuff 
} 

Es gibt andere Methoden, die Sie auch nutzen können, wie hasOwnProperty. Sie haben jeweils ihre eigenen Nuancen, aber in sieht so aus, als ob es in Ihrem Fall funktionieren sollte.

+0

Vielen Dank für die ausführliche Antwort. Natürlich lerne ich immer noch die Grundlagen. Ich war verärgert zu sehen, dass diese Frage ein wenig abgelehnt wurde. Soll ich hier nicht grundsätzliche Fragen stellen? Gibt es nach Ihrer Erfahrung bessere Orte, um solche Fragen zu stellen? – taylorhamcheese

+0

@ taylorhamcheese kein Problem. Ich denke nicht, dass es Down-Stimmen verdient, aber ich denke, die Leute waren verärgert 1) weil der Fehler klar war ("includes" ist keine Funktion), und 2) sollten Sie versuchen, Ihre Frage einzugrenzen. Fragen Sie beispielsweise "Wie überprüfe ich, ob eine Eigenschaft in einem Objekt vorhanden ist?" (Das war die eigentliche Frage, aber ich musste zuerst herausfinden, was die eigentliche Frage war). Macht das Sinn was ich sage? Hoffentlich hilft das. –

+0

@ taylorhamcheese Leider neigen die Leute dazu, auf den "down vote" Zug zu steigen. –

3

includes auf einem Objekt keine gültige Methode. Sie könnten in verwenden:

if ('quickreply' in parameters)

Verwandte Themen