2016-09-20 15 views
0

これはおそらく不可能ですが、とにかく質問する必要があります。Javascript Objectコンストラクタコンストラクタを呼び出す変数名を取得

私はコンストラクタ関数を使用している場合のようなもの:CS_Sidekickコンストラクタ内側から

function CS_Sidekick() { 
    //do whatever 
} 
var foo = new CS_Sidekick(); 

はコンストラクタと呼ばれる変数を把握するためにどのような方法が、この場合、私がfooを取得したいのですが、そこにあります。

のでCS_Sidekickコンストラクタ内側から

function CS_Sidekick(){ 
    //return foo since that's the variable that called it 
} 
+0

あなたはfooを返すと言います。私はパラメータを取る関数を使用し、それにいくつかのプロパティを追加してからそれを返します。そのような場合は、関数を呼び出す前にfooが存在し、 'foo = addNewProps(foo);を使用します。 – IrkenInvader

+0

"変数 "は何も"呼び出し "ません。これは呼び出しであり、次に変数への代入が続きます。他の何かが続く場合、あなたは何を得たいですか? (ヒント:いいえ、不可能です) – Bergi

+1

これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)です。あなたはそれについて尋ねていますが、本当の問題があなたが解決しようとしていることを私たちに言っているわけではないので、実際の問題に対して有用な解決法を提供することはできません。 – jfriend00

答えて

2

のようなものは、コンストラクタと呼ばれる 変数を把握する方法は、この場合、私は FOOを取得したいのですが、そこにあります。

いいえ、ありません。 CS_Sidekick()コンストラクタは、呼び出し元コードが結果として得られる新しいインスタンスで何を行うのか分かりません。の

var foo = new CS_Sidekick(); 

値:このようなコードがある

function CS_Sidekick(){ 
    //return foo since that's the variable that called it 
} 

あなたは本当にあなたのコメントはここに意味をなさないので、あなたが実際に解決しようとしている何の問題を説明する必要がありますCS_Sidekick()が実行されているときにfooがまだ設定されていないので、CS_Sidekick()fooを返そうとすると実際には意味をなさない。 fooに値がありません。また、発信者コードの全体のポイント:

var foo = new CS_Sidekick(); 

可変fooCS_Sidekick()の新しいインスタンスを割り当てることです。それが発信者が望んでいないものであれば、発信者はコードを別のものに変更する必要があります。

new CS_Sidekick();は、CS_Sidekickオブジェクトの新しいインスタンスを返す必要があります。それが何をすべきかです。

P.S.

CS_Sidekick()コンストラクタにその呼び出し側のことを知りたければ、それを引数としてコンストラクタに渡すことができます。コンストラクタ内から呼び出し環境に関する情報を自動的に取得する方法はありません。

+0

私は、彼が探していた魔法は、文字列 '' foo "' – Bergi

+0

@Bergiを返すことになっていたことを意味していたと思います。これはXY問題の質問で、実際の問題が何を解決しようとしているのかをOPが知らせてくれません。 – jfriend00

+0

+1は "引数を渡す"です。 – Bergi

関連する問題