相信同學(xué)們在看見這個標(biāo)題的時候就一臉懵逼了,什么?JS能常量定義?別逗我好嗎?確切的說,JS當(dāng)中確實(shí)沒有常量(ES6中好像有了常量定義的關(guān)鍵字),但是深入一下我們可以發(fā)現(xiàn)JS很多不為人知的性質(zhì),好好利用這些性質(zhì),就會發(fā)現(xiàn)一個不一樣的JS世界。

首先,在JS當(dāng)中,對象的屬性其實(shí)還含有自己的隱含性質(zhì),比如下面對象:

1 var obj = {};2 obj.a = 1;3 obj.b = 2;

在這里我們定義了一個對象 obj ,并且定義了這個對象的兩個屬性 a 、 b ,我們可以修改這兩個屬性的值,可以用 delete 關(guān)鍵字刪除這兩個屬性,也可以用 for ... in ... 語句枚舉 obj 對象的所有屬性,以上的這些操作叫做對象屬性的性質(zhì),在我們平常編寫代碼的時候我們會不知不覺的默認(rèn)了這些性質(zhì),把他們認(rèn)作為JS應(yīng)有的性質(zhì),殊不知這些性質(zhì)其實(shí)是可以修改的。我通常的定義的屬性的方法,默認(rèn)了屬性的性質(zhì),不過我們也可以在定義屬性的時候修改屬性的性質(zhì),比如:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

 1 var obj = {}; 2 obj.a = 1; 3 obj.b = 2; 4  5 //等價于 6 var obj = { 7     a: 1, 8     b: 2 9 }10 11 //等價于12 var obj = {};13 Object.defineProperty(obj, "a", {14     value: 1,              //初始值15     writable: true,        //可寫16     configurable: true,    //可配置17    &
        
		

網(wǎng)友評論