字符串的小故事

字符串(補(bǔ))

其實,我以前一直都認(rèn)為語言中「萬物皆對象」這一理念,以至于我在「JavaScript」學(xué)習(xí)中也這樣看。
回想理念的起點應(yīng)該是大一的一次講座,那是一個Java學(xué)習(xí)的講座。可當(dāng)自己學(xué)習(xí)前端的過程中,對
「對象」等概念幾乎都沒有了。今天,突然悟出來一點道理。就是下面這兩句話(僅涉及JavaScript中)。

  1. 只有對象才有屬性
  2. 字符串不是對象

因為身邊的好友多少會有一些「JavaScript」的基礎(chǔ),所以在這里我就不解釋什么是「對象」或「字符串」。
此時,回過來看看這兩句話,第一句很好理解,因為我們平時就是這樣寫的。

Paste_Image.png

當(dāng)時第二句話,就一定有問題了。請你回想10秒。你就會發(fā)現(xiàn),我們經(jīng)常會寫'aaa'.length、'aaa'.substring(x,x)....
可能你覺得很平常,但是當(dāng)你看到下面的顯示的時候,我反正之前一直糾結(jié)的。

Paste_Image.png

當(dāng)然還有使用構(gòu)造函數(shù)的方法創(chuàng)建字符串對象(請注意我的措詞)。當(dāng)然這樣也不能放棄我們來驗證字符串不是對象的理由。因為第一句話
一定是對的。如果是對象就可以做到設(shè)置新屬性訪問屬性,如下圖:

Paste_Image.png

那我來試試字符串的,如下圖:

Paste_Image.png

發(fā)現(xiàn)我們只能設(shè)置屬性,但是不能訪問設(shè)置過的屬性??墒蔷陀羞@么一個疑問了,為什么可以設(shè)置呢?我們的想法是,瀏覽器在解析到字符串
.的時候,默默的給我們創(chuàng)建了一個值與原來的字符串相同的字符串對象(請多看幾遍這句話)。

var a = 'baiji';
a.name = 'xiaoming' // 'xiaoming'
// 偽代碼顯示
// temp = new String("baiji");
// a.name ==> temp.name

但是臨時對象(temp)返回結(jié)果之后,瀏覽器銷毀了其值,所以當(dāng)我們訪問a.name的時候只會得到undefined。
這樣一來確實解決了為什么字符串使用方法的時候都要用另一個變量接住,而不是跟數(shù)組一樣的對象改變其本身。

總結(jié)

  1. 只有對象才有屬性
  2. 字符串不是對象
  3. 「萬物皆對象」有待商議

聽說這個是「JavaScript Magic」,我上網(wǎng)找到了一篇類似的解釋,如果你有更好的解釋或者發(fā)現(xiàn)自己發(fā)郵件給我。


本文章著作權(quán)歸白小霽所有,轉(zhuǎn)載須說明來源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,684評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,648評論 19 139
  • 校園,我們90后對這個詞匯很是敏感,提起它,總能想到一群蠢得像豬一樣的死黨,還有夢寐以求的,讓自己輾轉(zhuǎn)反側(cè)的女神或...
    和自己獨處閱讀 229評論 0 1
  • 秋日的清晨,偶遇美景
    明仔望山閱讀 242評論 2 3
  • 靜氣三分鐘。 布局:續(xù)盤。收官。
    土家閱讀 252評論 0 0

友情鏈接更多精彩內(nèi)容