2017-02-22 11 views
-4

これを修正してthis should showを印刷できますか?私はobj: myObj、またはobj: 'myObj'が必要なアプリケーションを構築しています。オブジェクトはJavaScriptでどのように参照できますか?

行1〜3は、エラーを示すためだけにあります。

let myObj = { 
 
    text: 'this shouldn\'t show' 
 
}; 
 

 
myObj = { 
 
    text: 'this should show', 
 
    obj: myObj 
 
} 
 

 
function show(object) { 
 
    document.write(object.text); 
 
} 
 

 
show(myObj.obj);

+0

' myObj.obj =このmyobjを動作するはず? – Ryan

+0

'myObj'を新しいオブジェクトで上書きしています。古いオブジェクトを参照しています。 'let myObj = {text: 'これは表示されます'}; myObj.obj = myObj; ' – Thomas

答えて

0

これはobject.property = objectを経由して完全に達成可能である自分自身を指すオブジェクト、とは何の関係もありません。ここでは2つの異なるオブジェクトがあり、同じ変数に順番に割り当てられます。 2番目のオブジェクトリテラルがobj: myObjで作成された時点で、myObj(変数)には、最初に作成したオブジェクトが含まれています。

あなたがオブジェクト自体を指すようにしたい場合は、単純に正しい値を持つプロパティを追加します。

myObj = { 
    text: 'this should show' 
} 

myObj.obj = myObj; 
-1
let myObj = { 
    text: 'this shouldn\'t show' 
}; 

myObj = { 
    text: 'this should show', 
} 
myObj.obj = myObj; 

function show(object) { 
    console.log(object.text); 
} 

show(myObj.obj); 

をする必要があります。これは動作するはず

0
  1. myObj = {
  2. テキスト: 'これは表示されません'
  3. };

上記のコードは、 "text"プロパティを持つmyObj変数を作成します。

4. myObj = { 
5. text: 'this should show', 
6. obj: myObj 
7. } 

上記のコードは、テキストプロパティがintializedれる1-3たコード行で作成されたオブジェクトに初期化され、「テキスト」プロパティと「OBJ」プロパティを持つ新しいオブジェクト構造と変数「このmyobj」をオーバーライド`;あなたは

let myObj = { 
    text: 'this shouldn\'t show' 
}; 

//Override the objects text property 
myObj.text = 'this should show'; 
//create a property obj and make it refer to the same object. 
myObj.obj = myObj; 

function show(object) { 
    document.write(object.text); 
} 

show(myObj.obj); 

にコードを変更した場合、Tショー」

を 'これは\ shouldn' の値には

関連する問題