在对象上调试 console.log

Debugging console.log on object

console.log 中,我在对象 canHandle: [Function: canHandle] 和第二个 canHandle: [Function] 中收到了输出。两者有什么区别?

const SessionEndedRequest = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'SessionEndedRequest';
    }
};

returns canHandle: [Function: canHandle]

obj = {};
obj.canHandle = function (handlerInput) {
    return handlerInput.requestEnvelope.request.type === that.type
        && handlerInput.requestEnvelope.request.intent.name === that.name;
}

返回 canHandle: [Function]

表示canHandle是对象的方法

例如

const someObject = {
  canHandle() {}
};

你可以称它为someObject.canHandle()

实际上这两个例子是一样的... 在第一个示例中,您使用 canHandle 方法声明了对象。 第二个例子你 decalerd 对象,后来分配了对象的 canHandle 方法

首先,您将一个函数分配给一个名为 canHandle 的 属性。在这种情况下,该函数有一个名称,该名称是 canHandle.

在第二个步骤中,您正在创建一个 anonymous function 并将其分配给对象的 canHandle 属性。这就是第二个函数没有名字的原因。