課程
/前端開發
/JavaScript
/JavaScript深入淺出
老師,按照你說的str加.t的屬性時候,先把str對象轉化成一個臨時的包裝對象,再次訪問會被銷毀,那豈不是str.length也不能訪問?
2015-03-06
源自:JavaScript深入淺出 1-4
正在回答
str是string(基本類型),本身是沒有方法的。
當嘗試把基本類型的str當做對象一樣訪問時,例如:str.length;?
解釋器會創建一個臨時的包裝對象,偽代碼:
[[tempObj]] = new String(str);
[[tempObj]].length; // 返回具體的length;
delete [[tempObj]]; // 銷毀臨時對象
重復訪問str.length會重復創建這個臨時對象。
所以str.t賦值可以成功,但再次訪問str.t返回undefined,因為每次創建的臨時包裝對象都是不同的。
qq_昔顏
明白了
舉報
由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握
1 回答臨時對象創建后被銷毀
2 回答有關臨時對象被銷毀的問題。
4 回答js包裝對象
2 回答對象創建方法
3 回答關于JS里的對象。創建函數對象和函數對象屬性的調用。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-03-09
str是string(基本類型),本身是沒有方法的。
當嘗試把基本類型的str當做對象一樣訪問時,例如:str.length;?
解釋器會創建一個臨時的包裝對象,偽代碼:
[[tempObj]] = new String(str);
[[tempObj]].length; // 返回具體的length;
delete [[tempObj]]; // 銷毀臨時對象
重復訪問str.length會重復創建這個臨時對象。
所以str.t賦值可以成功,但再次訪問str.t返回undefined,因為每次創建的臨時包裝對象都是不同的。
2015-03-11
明白了