js中為什麼值型別可以使用方法和屬性

antzone發表於2017-03-20

關於值型別和引用型別具體這裡就不多介紹了,具體可以參閱javascript值型別和引用型別一章節。在理論上,值型別是沒有屬性和方法的,所以也就不能夠使用屬性和方法,但是在實際的應用中卻並非如此,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var webName="antzone";
console.log(webName.length);

上面程式碼中的值型別資料webName,卻使用了length屬性。

這其中的原因主要是因為點(.)導致的,大家都知道點的一個很重要的作用是訪問物件中的屬性,但是這裡的點遇到左側的值型別後是進行一定的轉換,類似於下面的型別轉換,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var num="3"-2;
console.log(num);

在以上程式碼中,字串直接量使用了length屬性,這是因為點的左側需要一個物件,所以就會使用內建的ToObject()方法會對其進行轉換,於是就可以使用length屬性了,當然並不是由點直接完成轉換的,內部會進行了其他操作,這裡就不多介紹了,只要大家大體明白是怎麼回事就可以了,有興趣的朋友可以自行閱讀相關文件。

相關文章