能夠看到 str是一個基本類型,字符串類型,strObj是一個 對象類型,是String類型對應的包裝類windows
在最後一行打 clear();清除數組
str是一個基本類型,他沒有屬性和方法,獲得str的長度str.length 能夠獲得值,這是爲何。app
給 str 添加一個屬性 t也是能夠的 str.t = 10;但賦值以後再看t 爲undefined函數
JavaScript中有一個隱藏機制,當把一個基本類型,嘗試爲一個對象來使用時,好比在求長度,或添加屬性時,會吧基本類型轉化爲對應的包裝類型對象,至關於new String()一個一樣的值,當完成訪問或設置後,這個臨時對象,會被銷燬。spa
數字 number ,boolean都相似。prototype
typeof運算符會返回一個字符串,適合函數對象和基本類型的判斷對象
爲何 typeof null ==="object" 歷史緣由記住就好繼承
obj instanceof Object : 左操做數必須爲對象,若是爲基本類型直接返回false,。右操做數,必須爲函數對象,函數構造器,不然會拋出異常。ip
判斷左操做數的 原型鏈 上 ,是否有 右邊構造函數的 prototype 屬性。原型鏈
[1,2] instanceof Array === true
new Object() instanceof Array ===false
注意 不一樣的 window 或 iframe 間的對象檢測是不可使用instanceof的。
任何一個對象都有一個 constructor屬性,繼承自原型,constructor 會指向構造這個對象的構造器、構造函數。constructor是能夠改寫的因此使用時當心。
適合基本類型及Function檢測,遇到null失效返回 object,用 === 方式判斷
適合內置對象和基元類型,數組函數、在 IE 678 null undefined返回 [ object object ]。
適合自定義對象,也能夠用來檢測原生對象,在不一樣 iframe 和 windows間檢測時失效