亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這段代碼怎麼運行的???

var?obj;
obj[{}]=true;
obj[{x:1}]=true;
obj;


正在回答

8 回答

var obj={};

obj[{}]=true;

console.log(obj);//輸出Object {[object Object]: true}


var p;

for(p in keys){

? ? console.log("======="+p);//輸出=======0,應該證明里面有一個屬性

? ? console.log("======="+obj[p])//=======undefined 不知道為什么會這樣

? ? console.log("======="+obj[p.toString()])//=======undefined 不知道為什么會這樣

}



obj[{x:1}]=false;

console.log(obj);//輸出Object {[object Object]: false}


var p;

for(p in keys){

? ? console.log("--------"+p);//輸出------0 證明里面有一個屬性

}



var o={};

for(p in o){

? ? console.log("++++++++++++++++++++"+p);//無輸出,里面沒屬性

}

console.log(o.toString());

//輸出結果[object Object]與輸出的Object {[object Object]: false}很相似

o={x:1};

console.log(o)//輸出Object {x: 1}和Object {[object Object]: false}也很相似

console.log(o.toString())//同樣也是輸出[object Object] ?注意這里用的是toString(),轉成字符串

//把它們兩個結合就變成Object {[object Object]: false}了


//然后推測一種可能

//obj[{}]=true; ? {}不是字符串,js自動調用o.toString()方法,將其轉成字符串,因為key只能是字符串

//由上面知道o{} 的 toString()方法輸出的是[object Object],所以obj中的[object Object]指向true

//obj[{x:1}]=false; {x:1}不是字符串,js自動調用o.toString()方法,將其轉成字符串

//同樣的由上面o{x:1} 的toString得到的字符串也是[object Object],

//所以obj中的[object Object](key)被改變為指向false(value);

//有一個問題就是o{x:1} ? o.toString()為什么輸出的不是[String,Number],這個就不是很懂

//最后,我不知道這是對還是錯,只是結合上面的輸出結果推出來的

//所以如果錯了,不干我事


0 回復 有任何疑惑可以回復我~

應該是,obj[{}]=true ? ?可能隱式的將{}變成字符串,也就是調用了 ?{}.toString()方法

但是還是說一遍,我不敢保證這是對的

0 回復 有任何疑惑可以回復我~

寫這麼多,真是辛苦了。


0 回復 有任何疑惑可以回復我~

這麼說的話,就是obj[{}]=true;調用了toString方法,然后輸出object,賦值為true,然后下一句就相當于覆蓋了上一句?

0 回復 有任何疑惑可以回復我~

最后要是有可以肯定的正確答案@我

0 回復 有任何疑惑可以回復我~

最后可以肯定的正確答案@我

0 回復 有任何疑惑可以回復我~
var?obj={};
obj[{}]=true;
obj[{x:1}]=true;
obj;

呵呵,應該是這樣的,大神,幫忙解答疑惑啊。

0 回復 有任何疑惑可以回復我~

好像報錯了啊

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這段代碼怎麼運行的?。?/h1> 我要回答 關注問題

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號