Javascript 为什么';是否允许将方法作为对象键/值?

Javascript 为什么';是否允许将方法作为对象键/值?,javascript,syntax,Javascript,Syntax,我在试验一些javascript时遇到了一个语法错误。我试图用一个方法返回的值分配一个对象键 var a = new function(){ this.b = function() { return "c"; } }; var myobj = { a.b:"d" //Syntax error, unexpected '.' }; 上述操作将抛出一个错误;但是javascript将允许: var n = a.b; var myobj = {

我在试验一些javascript时遇到了一个语法错误。我试图用一个方法返回的值分配一个对象键

var a = new function(){
    this.b = function()
    {
        return "c";
    }
};


var myobj = {
   a.b:"d" //Syntax error, unexpected '.'
};
上述操作将抛出一个错误;但是javascript将允许:

var n = a.b;

var myobj = {
   n:"d" //no error
};

即使
typeof a.b
typeof n
返回与函数相同的值?

虽然看起来很奇怪,但我希望如果您登录
myobj.c
,您希望得到一个结果。使用es6,您可以执行以下操作:

var a=function(){
this.b=函数()
{
返回“c”;
}
};
var myobj={
[a.b()]:“d”
};

console.log(myobj.c);//d
虽然这看起来很奇怪,但如果您登录
myobj.c
,我希望您希望得到一个结果。使用es6,您可以执行以下操作:

var a=function(){
this.b=函数()
{
返回“c”;
}
};
var myobj={
[a.b()]:“d”
};

console.log(myobj.c);//d
我想你是在尝试这样的事情吧

var myobj = {
   "d": a.b
};

然后
myobj.d()
或@baao已经回答了另一种可能性?

我想你是在尝试这样的事情吧

var myobj = {
   "d": a.b
};

然后
myobj.d()
或@baao已经回答了另一种可能性?

myobj.n
将返回“d”。从es6开始,您可以将变量放入
[]
中,以将变量用作对象键。虽然我不认为这是你在本例中想要的。在
n:“d”
中的
n
是名为
n
的属性,与
var n=a.b的
n
没有任何关系。为什么您希望某个方法成为密钥?或者你是说一个方法的名称作为一个键吗?a.b的返回值意味着成为键的名称,可能是dupe?答案确实相同,但所问的问题有点不同。
myobj.n
将返回“d”。从es6开始,您可以将变量放入
[]
中,以将变量用作对象键。虽然我不认为这是你在本例中想要的。在
n:“d”
中的
n
是名为
n
的属性,与
var n=a.b的
n
没有任何关系。为什么您希望某个方法成为密钥?或者你是说一个方法的名称作为一个键吗?a.b的返回值意味着成为键的名称,可能是dupe?答案确实相同,但所问的问题有点不同。myobj.d()????d是一个键值对而不是一个函数检查我的代码段,在这种情况下它是一个函数。是的。忘记了a.b.的类型。。。Sorrymyobj.d()????d是一个键值对而不是一个函数检查我的代码段,在这种情况下它是一个函数。是的。忘记了a.b.的类型。。。很抱歉