javascript為什么字符串直接量可以使用屬性和方法
在分析標(biāo)題中的問題之前先來看一段代碼實例:
var str="實例3";
console.log(str.length);
如果不深究,那么上面的代碼實在是太普通不過了,但是細致看來,可能有不少朋友有這樣的疑問,那就是為什么字符串直接量可以使用屬性或者方法,不是只有對象才可能嗎,下面就介紹一下其中的原理:
當(dāng)字符串直接量調(diào)用屬性或者方法的時候,javascript會隱式將字符串直接量轉(zhuǎn)換為對象,也就相當(dāng)于執(zhí)行了操作:
var str="實例3";
var str=new String(str)
console.log(str.length);
特別說明:隱式轉(zhuǎn)換創(chuàng)建的是一個臨時對象,一旦屬性或者方法引用結(jié)束,這個新創(chuàng)建的對象就會被銷毀(在javascript的內(nèi)部具體是否真正創(chuàng)建了臨時對象或者銷毀臨時對象不得而知,這里不深究了,從表現(xiàn)來看確實如此)。對于其他的布爾值或者數(shù)字也是一樣的道理。再來看一段代碼實例:
var str="實例3";
str.len=15;
console.log(str.len);
上面代碼輸出是undefined,因為臨時對象在調(diào)用屬性之后就自動銷毀了。
代碼修改:
var str="實例3";
var str=new String(str);
str.len=15;
console.log(str.len);
上面的代碼沒有任何問題,因為這里確確實實創(chuàng)建一個對象。
相關(guān)推薦
-
js將字符串轉(zhuǎn)換為編碼序列代碼實例
本章節(jié)分享一段代碼實例,它實現(xiàn)了將字符串轉(zhuǎn)換為編碼序列的功能。代碼如下:vr str=實例3;vr rr=str.slit();vr codrr=rr.m(funct
-
js選中指定位置文本框文本代碼
本章節(jié)分享兩段代碼,它可以實現(xiàn)對文本框中指定文本內(nèi)容的選中效果。代碼實例如下:function gtos(l) { vr rng, txtRng, dulict l.fo
-
javascript刪除指定索引的數(shù)組代碼實例
本章節(jié)分享一段代碼實例,它實現(xiàn)能夠刪除數(shù)組指定索引的元素的效果。代碼實例:function RmovVlByIndx(rr,indx){ rr.slic(indx,1);}vr
-
獲取文檔最后修改時間代碼實例
本章節(jié)分享一段代碼實例,它實現(xiàn)獲取當(dāng)前文檔最后修改時間的效果。代碼實例如下
-
select下拉菜單多級級聯(lián)效果代碼實例
使用slct下拉菜單經(jīng)常制作多級級聯(lián)效果,本章節(jié)就以一個省市地區(qū)三級級聯(lián)效果做一下演示。代碼實例如下:















