javascript為什麼字串直接量可以使用屬性和方法
在分析標題中的問題之前先來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var str="softwhy.com"; console.log(str.length);
如果不深究,那麼上面的程式碼實在是太普通不過了,但是細緻看來,可能有不少朋友有這樣的疑問,那就是為什麼字串直接量可以使用屬性或者方法,不是隻有物件才可能嗎,下面就介紹一下其中的原理:
當字串直接量呼叫屬性或者方法的時候,javascript會隱式將字串直接量轉換為物件,也就相當於執行了如下操作:
[JavaScript] 純文字檢視 複製程式碼var str="softwhy.com"; var str=new String(str) console.log(str.length);
特別說明:隱式轉換建立的是一個臨時物件,一旦屬性或者方法引用結束,這個新建立的物件就會被銷燬(在javascript的內部具體是否真正建立了臨時物件或者銷燬臨時物件不得而知,這裡不深究了,從表現來看確實如此)。對於其他的布林值或者數字也是一樣的道理。再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var str="softwhy.com"; str.len=15; console.log(str.len);
上面程式碼輸出是undefined,因為臨時物件在呼叫屬性之後就自動銷燬了。
程式碼修改如下:
[JavaScript] 純文字檢視 複製程式碼var str="softwhy.com"; var str=new String(str); str.len=15; console.log(str.len);
上面的程式碼沒有任何問題,因為這裡確確實實建立一個物件。
相關文章
- js中為什麼值型別可以使用方法和屬性JS型別
- javascript獲取物件直接量中的屬性和屬性值JavaScript物件
- js中為什麼基本型別資料可以使用屬性和方法JS型別
- 為什麼 JavaScript 的私有屬性使用 # 符號JavaScript符號
- 物件直接量屬性為數字時如何取值物件
- 字串的常用屬性和方法字串
- 為什麼基本型別可以呼叫方法——以字串為例型別字串
- JavaScript 字串 length屬性JavaScript字串
- javascript中直接量的概念是什麼JavaScript
- javascript如何判斷物件直接量中是否含有指定屬性JavaScript物件
- JavaScript公有屬性、私有屬性、公有方法和原型方法JavaScript原型
- JavaScript:prototype屬性使用方法JavaScript
- vue 標籤和屬性中 字串拼接方法Vue字串
- python屬性和方法的區別是什麼Python
- JavaScript:Object屬性方法JavaScriptObject
- JavaScript訪問物件的屬性和方法JavaScript物件
- JSON字串轉換為物件直接量JSON字串物件
- javascript陣列可以使用字串作為索引JavaScript陣列字串索引
- JavaScript私有屬性和靜態屬性JavaScript
- 為什麼列印物件,點開檢視某屬性有值,但是直接列印無值物件
- js將物件直接量轉換為字串形式JS物件字串
- 我為什麼不推薦使用BeanUtils屬性轉換工具Bean
- 【譯】為什麼命名“它”為依賴屬性(DependencyProperty)
- JavaScript 物件直接量JavaScript物件
- js中物件的屬性可以列舉是什麼意思JS物件
- Python類屬性和例項屬性分別是什麼?Python
- 如何遍歷物件直接量中的各個屬性物件
- javaScript DOM方法與屬性摘要JavaScript
- javascript layerX和layerY屬性JavaScript
- 為什麼React元素有一個$$typeof屬性?React
- Laravel中你為什麼可以直接在 web.php 中 直接使用 Route ? 服務提供者的介紹LaravelWebPHP
- .NET ORM 導航屬性【到底】可以解決什麼問題?ORM
- 為什麼我們要使用min-height和max-height樣式屬性?
- javaScript事件(四)event的公共成員(屬性和方法)JavaScript事件
- Rust 屬性是什麼?Rust
- HTML屬性是什麼?HTML
- JavaScript 數字呼叫方法或者屬性JavaScript
- 單執行緒的 Javascript 為什麼可以非同步執行緒JavaScript非同步