2016-09-05 8 views
0

構文エラーが発生したときに私はいくつかのjavascriptを試していました。私はオブジェクトキーにメソッドから返される値を割り当てようとしていました。jsがオブジェクトのキー/値としてメソッドを許可しないのはなぜですか?

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戻りますか?

+0

'myobj.n'は「d」を返します。 es6から、変数を '[]'に入れて変数をオブジェクトキーとして使うことができます。私はあなたがこの場合に望んでいるとは思っていませんが。 – baao

+2

'n:" d "'の 'n'は' n'という名前のプロパティであり、 'var n = a.b;'の 'n'には何ら関係しません。 –

+0

なぜメソッドをキーにしたいのですか?あるいは、メソッド名をキーとして意味しますか? – Shilly

答えて

2

ログはmyobj.cとすれば結果は得たいと思っています。 ES6を使用すると、以下の操作を行うことができます

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

 

 
var myobj = { 
 
    [a.b()]:"d" 
 
}; 
 

 
console.log(myobj.c); // d

しかし、なぜあなたはこれをしたいのでしょうか?

1

このようなことをやっていると思いますか?

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

、その後myobj.d()または@baaoすでに他の可能性に答えましたか?

+0

myobj.d()???? dはキーと値のペアです。NOT FUNCTION –

+0

私のスニペットをチェックしてください。 – Tester

+0

そうですね。 a.bのタイプを忘れました...ごめんなさい –

関連する問題