没有键值的对象作为方法参数

时间:2019-05-09 22:37:39

标签: javascript

我正在与中枢神经联系工作,在prismaObjectType中,我看到了一些奇怪的东西。 一个非常基本的例子。

简单功能,demo(p) p应该是一个对象

            function demo(p) {
              console.log(p);
              console.log(p.normal);
              console.log(p.normal());
            }

我将传递一个键normal和一个函数作为值

        demo({a:"a", normal: function(){console.log("normal")},b:"b"});

它登录控制台

            {a: "a", normal: ƒ, b: "b"}
            ƒ (){console.log("normal")}
            "normal"

奇怪的是,我正在传递一个没有单词函数也没有键的方法

            demo({a:"a",   weird(){ console.log("it is weird") }   ,b:"b"});    

            // console

            {a: "a", weird: ƒ, b: "b"}
            ƒ weird(){console.log("it is weird")}
            it is weird             

{a:"a", the weird part >>>>> weird(){console.log("it is weird")} <<< ,b:"b"}

这种做法的名称是什么?有何评论?

2 个答案:

答案 0 :(得分:5)

这是预期的JS行为。它是ecma 2015(mdn reference)的简写形式

基本上:

onResume

缩写

var o = {
  property(parameters) {}
};

答案 1 :(得分:3)

这是对象introduced in ES2015上的函数属性的“简写”语法。基本上,以下两个是等效的:

// traditional syntax
const foo = {
    bar: function bar(msg) { console.log(msg); }
};

// shorthand syntax
const foo = {
    bar(msg) { console.log(msg); }
};