此 JavaScript 对象中定义的值是否实际起作用
Are the values defined in this JavaScript object actually functions?
我是 JavaScript 的新手,在读完 "JavaScript The Good Parts" 之后,我想编写一些有趣的代码。我茬在这段我无法理解的代码截图上:
const actions = {
say(sessionId, context, message, cb) {
console.log(message);
cb();
},
merge(sessionId, context, entities, message, cb) {
// Retrieve the location entity and store it into a context field
const loc = firstEntityValue(entities, 'location');
if (loc) {
context.loc = loc;
}
cb(context);
},
error(sessionId, context, error) {
console.log(error.message);
},
['fetch-weather'](sessionId, context, cb) {
// Here should go the api call, e.g.:
// context.forecast = apiCall(context.loc)
context.forecast = 'sunny';
cb(context);
},
};
它是从 wit.ai 节点.js客户端截取的。在我的理解中,"动作"是一个对象,"说"、"合并"、"错误"和"['fetch-weather']"是保存为没有键的值的函数。
如何在没有保留字"函数"的情况下定义函数?
我也无法理解"['获取天气']"部分。
这是 ES6 中的一个新功能,简写方法名称。它与
const a = {
say: function say(sessionId, context, message, cb) {
console.log(message);
cb();
}
}
我也无法理解"['获取天气']"部分。
我想这样做是因为他们在函数名称中使用了-
。
所以actions.fetch-weather(..);
是非法的,因为-
是运营商。
另一方面,使用 actions['name']
-表示法,您可以使用任何名称。
如何在没有保留字"函数"的情况下定义函数?
你可以在这里找到答案
我也无法理解"['获取天气']"部分。
ES6 引入了这种语法,具有称为计算属性名称的功能,您可以在其中动态定义属性名称。
使用 ES5,不能直接在对象文本中将无效标识符(如 fetch-weather
)声明为属性。
ES6:
const actions = {
...,
['fetch-weather'](sessionId, context, cb) {
},
...
};
ES5:
var actions = {
// props here
};
actions['fetch-weather'] = function(sessionId, context, cb) {
...
};
相关文章:
- 使用map来检查是否为真'不起作用
- 此 JavaScript 对象中定义的值是否实际起作用
- 我需要让用户输入他的出生日期,并使用javascript检查其形式是否正确.我的代码不起作用
- If.else语句检查NaN和空字符串是否在JavaScript中不起作用
- 检查window.location.href.indexOf是否'不起作用
- 检查变量是否未定义不起作用
- 检测样式表是否无法加载(在 Firefox 上不起作用)
- 在jquery中检查元素是否具有特定的类不起作用
- 是否有修复“滚动到”jquery 函数在火狐中不起作用的问题
- 使用 jQuery 检查无线电时,检查是否选中无线电不起作用
- Jquery “:empty” 不起作用 - 检查所有