淺談JS基礎與內置對象
第一篇js文章,今天我將從基礎部分,以及三座大山開始淺談一下自己對js的理解,有不對的地方,請大神們告知修改
我們先來了解一下js的一些基礎,
首先是數據類型,JS有兩種數據類型,原始類型和引用類型,我們用typeof運算符來判斷一個數據是何種類型,
值得一提得是,typeof只能區分值類型,除function外的引用類型將全部返回Object包括null,
所以typeof可以檢測的值只有
undefined、string、number、boolean、function、object
typeof undefined //undefined typeof "zhangsan" //string typeof 100 //number typeof true //boolean typeof function a(){} //function typeof null //object typeof {} //object typeof [] //object
可以看到null,[],{}都返回了object,這不是我們想要看到的,如何區分引用類型呢,我們可以用instanceof運算符
[] instanceof Array //true ({}) instanceof Array //false ({}) instanceof Object //true null instanceof Object //false
instanceof運算符的用法為左邊是需要確定的引用類型,右側為相應的引用類型,若相同則為true,不同為false
可以看到instanceof解決了引用類型區分的問題,但是instanceof並不屬於很嚴格的校驗方式,特殊情況我會在後面的章節中提到
我們都知道js是弱類型語言,所以js會自動進行類型轉換,==只檢查值是否相等,===不僅檢查值還要檢查類型是否相等
在js中的變量計算----強制轉換
//0、" "、false、[]用==檢驗是相同的, 0 == "" //0->false 與 ""->false進行比較 返回true [] == "" //true ({}) == "" //false 因為{}直接用來比較會報類型錯誤,所以需要用()運算符包裹
——————————————————————————————————————————————————————————————————————————————————
null == undefined //true null === undefined //false
從上述代碼可以簡單的理解一下js的類型轉換,第三行代碼特別有趣,在js中若僅以==判斷時,
null與undefined會進行類型轉換導致相同,運用這一特性,我們可以在日後寫代碼中用
類似obj.name == null 來既判斷obj.name 是否為null又判斷是否為undefined。
JS中的內置對象包括: 11個
String Number Boolean —— 包裝類型
Array RegExp Math Date
Error
Function Object
Global: 是全局作用域對象: 在瀏覽器中被window代替
那麽什麽是包裝類型呢 : 即保存一個原始類型的值 並提供操作原始類型值的API
在js中原始類型的值本身不具有任何功能,比如: var a=12.652; a.toFixed(2);
a是如何調用toFixed()函數的,因為在js中只要試圖對原始類型的值調用函數時,都會自動創建包裝類型對象
建立包裝類型的過程分為以下幾步:
1.在試圖對原始類型的值調用任何函數時先判斷原始類型的類型名
2.自動創建對應的包裝類型對象,保存需要被操作的原始類型值
3.調用包裝類型對象提供的API
4.API調用後包裝對象自動釋放
下面我們來展示一道小例題:
var str="haha"; str.len=5; console.log(str.len)
手快的小夥伴應該已經試出來了,沒錯是undefined,那麽我們的.len去哪了呢
原理是這樣的 str.len=5 -> new String(str).len=5;
//執行後,new String()沒有變量接收,釋放了!
console.log(str.len) -> console.log(new String(str).len);//此時的new String為新來的包裝類型,並不認識len屬性
改進:我們應該采取這種方式
var str=new String("haha"); str.len=5; //此時new String()被str變量引用,不會被釋放! console.log(str.money); //5
好啦,今天的分享就到這裏啦,如果有補充或者有錯誤請提示我改正,初來乍到請多指教
淺談JS基礎與內置對象