每日總結
1.JavaScript面向對象
2.七大數據類型類型
1.JavaScript面向對象的理解
JavaScript面向對象和其他基於類的面嚮對象語言相比他是基於原型的,面向對象其實就是一種接近人類思維的一種概念,舉個例子,先有一個蘋果(對象),我們知道這個蘋果能喫,之後才知道所有蘋果都能喫(類)。說起面向對象大家都會想到封裝繼承多態,這裏我要強調的是他們的不同點,JavaScript是一門弱類型語言,在很多地方並不嚴謹但是自由度也更高,他的對象是可以在運行中被修改的。
var o = {a:1};
o.b = 2;
console.log(o.a + o.b);//輸出爲3
在一般基於類的編程語言中這種是不能理解的,但是迴歸本質來講這種往往也是一種合理的面向對象方式。要知道所謂的對象:
1.是一個可以觸摸或者可以看見的東西;
2.人的智力可以理解的東西;
3.可以知道思考或行動(進行想象或者施加動作)的東西;
這裏再說一下數據的屬性的四個特徵
value:屬性的值。
writable:決定屬性能否被賦值。
enumerable:決定for in 能否枚舉該屬性。
configurable:決定該屬性能否被刪除或者改變特徵值。
如果我們想要去改變屬性的特徵我們可以使用object.defineProperty:
var o = {a:1};
//使用defineProperty方式給對象添加屬性
Object.defineProperty(o,'b',{value:2,writable:false,enumerable:false,configurable:true});
//查看屬性
console.log(Object.getOwnPropertyDescriptors(o,'a'))
Object.getOwnPropertyDescriptors(o,'b');
o.b = 3;
console.log(o.b);//輸出爲2
每次訪問屬性都會執行getter和setter函數。
var obj = {get a(){return 1}}
console.log(obj.a)
2.JavaScript七大數據類型
2.1 Undefined;
表示未定義,在JavaScript當中屬於一個變量而非關鍵字,爲了避免被篡改建議用void 0 替代他。
2.2 Null;
代表已經聲明瞭但是爲空。
2.3 Boolean;
布爾類型,只有真(true)和假(false)兩個值。
2.4 String;
字符串的最大長度爲2^52-1,字符串一旦被構造出來就無法變更,所以字符串具有值類型的特徵。
2.5 Number;
數字類型,其中包含單精度小數與雙精度小數,比如0.1+0.2 != 0.3 這就涉及到精度問題,所以儘量避免使用小數判斷防止出錯,number也是有最大長度限制的,比如正無窮與負無窮。
2.6 Symbol;
ES6的新類型,之後再詳細介紹
2.7 Object;
對象類型,剛剛講過了對象定義了屬性的集合,屬於key-value結構