2016-08-04 2 views
-1

Я использовал для программирования на C++, но я пытаюсь запрограммировать ботмана facebook в Javascript.Javascript facebook bot function

У меня есть функция Options, которая создает кнопки выбора. Кнопки программируются как это (1):

"buttons": [{ 
"type": "web_url", 
"url": "https://www.messenger.com", 
"title": "Use" 
}] 

Но так как у меня есть много из них я хотел бы создать функцию для создания кнопок. Я пытался создать функцию кнопки вроде:

function PLButton(type, title, payload) { 
    "type": type, 
    "title": title, 
    "payload": payload 
} 

А затем заменить код выше (1) этим:

"buttons": [{PLButton("postback", "Drop", "PRESS_CANCEL")}] 

Но это не работает.

+0

возвращает объект буквальным из функции PLButton? – gcampbell

+0

И, кстати, в объектных литералах ключи не обязательно должны быть указаны. '{foo: 42}' эквивалентно '{" foo ": 42}' (но если вам нужна * переменная * 'foo', из ES6 вы можете сделать' {[foo]: 42} '). – gcampbell

ответ

-1

Синтаксис объектного синтаксиса и функциональный синтаксис тела не являются взаимозаменяемыми, но вы можете следующим образом использовать объектный литерал внутри функции. Если вы хотите построить и вернуть объект, вам нужно объединить две попытки:

function PLButton(type, title, payload) { 
    return { 
    "type": type, 
    "title": title, 
    "payload": payload 
    }; 
} 

Объект буквальный синтаксис ({x: 1}) делает что-то похожее на создание карты (объект ДИКТ-режим), который функция может затем вернитесь. Этот помощник довольно распространен, так как объект легче расширить позже списка свободных параметров.

-1
var initialButtonList = {"buttons": [{ 
"type": "web_url", 
"url": "https://www.messenger.com", 
"title": "Use" 
}]} 

function PLButton(type, title, payload) { 
var newButton={//create newButton as object that holds key-value pairs 
"type": type, 
"title": title, 
"payload": payload 
}; 
return newButton; 
} 
initialButtonList.buttons.push(PLButton("postback", "Drop", "PRESS_CANCEL")); 
//initialButtonList will now have the newly added button as well; 
+9

Добро пожаловать в SO. Можете ли вы объяснить, почему/как ваш код решает проблему, а не просто отправлять код? – DVK

+1

Не могли бы вы объяснить это лучше? У меня возникли некоторые проблемы с вызовом функции внутри моей функции Options: Параметры функции (отправитель, name1, Имя2) { пусть MessageData = { "вложение": { "типа": "шаблон", "полезной нагрузки" : { "template_type": "generic", "elements": [{ "title": name1, initialButtonList.buttons.push (PLButton («postback», «Drop», «PRESS_CANCEL»)); Как это сделать? :/ Спасибо за внимание – Laura

+0

@ DVK, @ Laura Код работает следующим образом: initialButtonList - это объект с свойством, называемым кнопками. Кнопки - это массив объектов, каждый из которых содержит список свойств: type, url, title. Когда добавляется новая кнопка (которая также является объектом), ее следует добавить к кнопкам, что достигается с помощью следующей строки «initialButtonList.buttons».push (PLButton («postback», «Drop», «PRESS_CANCEL»)); « – Meghana

-1

Решенный!

Я только что создал такую ​​функцию, что:

function PLButton(tipo, titulo, accao){ 

var Butt = {type:tipo, title: titulo, payload: accao}; 

return Butt; 

}

И incede Опции несильно:

"buttons": [PLButton("postback", "Use", "PRESS_USE_SCISOR"), PLButton("postback", "Drop", "PRESS_DROP_SCISOR")],