JavaScript中常說 萬物皆對象。下面簡單分析一下這句話,加深對js的一些深入的理解。
js中數據類型:1.原始數據類型 2.引用數據類型
原始數據類型:number,undefined,null,string,boolean
引用數據類型:object
使用typeof檢查數據類型 可以知道 typeof(null)返回的是object。
這是由於計算機存儲造成的
在底層存儲對象時都是二進制,JavaScript中如果二進制前三位都是0就會被判斷為object類型,
null的二進制表示全是0,所以返回的是“object”。
所謂對象,都有自己的屬性和方法。
可以操作對象的屬性,進行增刪改查
寫一個函數類對象
function fun(){}
1.增 fun.age = 20; 直接 函數名.屬性名 = 屬性值
2.刪 delete fun.age; 使用delete 函數名.屬性名
3.改 fun.age = 18; 存在的函數名.屬性名 = 更新的屬性值
4.查 fun.age ;
可以看出函數是可以直接當成對象使用的。
而原始數據類型:number,undefined,null,string,boolean
原始數據類型存儲在棧中 他們的存儲結構是不能改變的,改變的可以是地址。
var str = "hello world";
str = 123;
console.log(str)
打印出來肯定是123。 因為str的存住地址發生了改變。
引用數據類型 是存儲在堆和棧中 但對象里面去增加屬性和方法是不會改變存儲的地址的。
如果給原始類型添加屬性 str.age = 18; 不會報錯,但在系統檢查為原始數據類型的瞬間會被刪除。