對(duì)象

對(duì)象

對(duì)象可以通過(guò)兩種形式定義: 聲明形式和構(gòu)造形式

聲明形式語(yǔ)法: var myObj = {key:value}

構(gòu)造形式語(yǔ)法: var myObj = new Object(); myObj.key = value;

類型: 語(yǔ)言類型有六種 : string number boolean null undefined object

內(nèi)置對(duì)象: String Number Boolean Object Function Array Date RegExp Error

var myObject = {

a:2

}

myObject.a; //2 屬性訪問(wèn)

myObject["a"] // 2 鍵訪問(wèn)

ES6 可計(jì)算屬性名

var prefix = "foo";

var myObject = {

[prefix + "bar"] : "hello",

};

myObject["foobar"]; // hello

myObject["foobaz"]; // world

1.writable 決定是否可以修改屬性的值

var myObject = {};

Object.defineProperty(myObject,"a",{

value:2,

writable:false, // 不可寫!

configurable: true,

enumerable: true

});

myObject.a = 3;

myObject.a; // 2

2.configurable

只要屬性是可配置的,就可以使用defineProperty(..) 方法來(lái)修改描述屬性亚侠。

var myObject = {

a : 2

};

myObject.a = 3;

myObject.a; // 3

Object.defineProperty(myObject,"a",{

value: 4铐料,

writable:true,

configurable:false,// 不可配置

enumerable: ture

});

myObject.a; // 4

myObject.a = 5;

myObject.a; // 5

Object.defineProperty(myObject,"a",{

value: 6赏淌,

writable:true,

configurable:true,

enumerable: ture

}) // TypeError

configurable 修改成flash 是單向的泰佳,無(wú)法撤銷

delete只用來(lái)刪除對(duì)象的可刪除屬性。

var myObject = {

a:2

}徙歼;

myObject.a //2

delete myObject.a;

myObject.a // undefined

3.enumerable 控制的是屬性是否出現(xiàn)在對(duì)象的屬性枚舉中王暗。

1.對(duì)象常量,結(jié)合writable: false 和configurable: false 就可以創(chuàng)建一個(gè)真正的常量屬性

(不可修改殉簸,重定義或者刪除)闰集。

var myObject = {};

Object.defineProperty(myObject,"FAVORITE_NUMBER",{

value:42沽讹,

writable: false,

configurable: false

})

2.禁止擴(kuò)展

禁止一個(gè)對(duì)象添加新屬性并保留已有屬性,可以使用Object.preventExtensions(...)

var myObject = {

a:2

};

Object.preventExtensions(myObject);

myObject.b = 3;

myObject.a; // undefined

3.封存

Object.seal(...) 會(huì)創(chuàng)建一個(gè) “封存的對(duì)象”武鲁,這個(gè)方法實(shí)際上會(huì)在一個(gè)現(xiàn)有對(duì)象上調(diào)用

Object.preventExtensions(...) 并把所有屬性標(biāo)記為configurable:false.

4.凍結(jié)

Object.freeze(...) 會(huì)創(chuàng)建一個(gè)凍結(jié)對(duì)象爽雄,這個(gè)方法實(shí)際上是會(huì)在一個(gè)現(xiàn)有對(duì)象上調(diào)用

Object.seal(...) ,還可以深度凍結(jié)一個(gè)對(duì)象。

Getter和Setter

var myObject = {

// 給 a 定義一個(gè)getter

get a() {

return 2;

}

}

myObject.a = 3;

myObject.a; // 2

由于只定義了 a 的getter,所以對(duì)a 的值進(jìn)行設(shè)置時(shí)set 操作會(huì)忽略賦值操作沐鼠,不會(huì)拋出錯(cuò)誤挚瘟。

通常來(lái)講getter 和setter是成對(duì)出現(xiàn)的

var myObject = {

// 給 a 定義一個(gè)getter

get a() {

return this.a;

},

// 給 a 定義一個(gè)setter

set a(val) {

this.a = val * 2;

}

};

myObject.a = 2;

myObject.a; // 2

存在性

可以在不訪問(wèn)屬性的情況下判斷對(duì)象中是否存在這個(gè)屬性:

var myObject = {

a:2

};

("a" in myObject); // true

("b" in myObject); // false

myObject.hasOWnProper("a"); // true

myObject.hasOwnProperty("b"); // false

in 操作符會(huì)檢查屬性是否在對(duì)象及[[Prototype]]原型鏈中饲梭。

hasOwnProperty(...) 只會(huì)檢查屬性是否在myObject對(duì)象中乘盖。

判斷屬性是否可枚舉:

var myObject = {};

Object.defineProperty(

myObject,

"a",

// 讓a像普通屬性一樣可枚舉

{enumerable: true,value:2}

);

Object.defineProperty(

myObject,

"b",

// 讓b 不可枚舉

{enumerable: false,value:3}

)

myObject.propertyIsEnumberable("a"); // true

myObject.propertyIsEnumber("b"); // false

Object.keys(myObject); // ["a"]

Object.getOwnPropertyName(myObject); // ["a","b"]

propertyIsEnumerable(...) 會(huì)檢查給定的屬性名是否直接存在于對(duì)象中(而不是在原型鏈)并且滿足enumerable:true

Object.keys(...) 會(huì)返回一個(gè)數(shù)組,包含所有可枚舉屬性

Object.getOwnPropertyNames(...) 返回一個(gè)數(shù)組排拷,包含所有屬性侧漓,無(wú)論是否可枚舉

遍歷

for .. in 可以用來(lái)遍歷對(duì)象的可枚舉屬性列表

對(duì)于數(shù)值索引的數(shù)組來(lái)說(shuō),可以使用標(biāo)準(zhǔn)的for 循環(huán)

ES5 中新增的 forEach(..) every(...) some(..)

forEach(...) 會(huì)遍歷數(shù)組中所有值并忽略回調(diào)函數(shù)的的返回值监氢。

every(...) 會(huì)一直運(yùn)行到回調(diào)函數(shù)返回false

some(...) 會(huì)一直運(yùn)行到回調(diào)函數(shù)返回true

Es6 增加 for .. of 循環(huán)語(yǔ)法

var myArray = [ 1,2,3];

for(var v of myArray){

console.log(v)

}

普通的對(duì)象沒(méi)有@@iterator,可以給任何想遍歷的對(duì)象自定義

var myObject = {

a:2,

b:3

};

Object.defineProperty(myObject,Symbol.iterator,{

enumerable: false,

writable: false,

configurable: true,

value: function() {

var o = this;

var idx = 0;

var ks = Object.keys(o);

return {

next: function(){

value: o[ks[idx++]],

done:(idx > ks.length)

}

}

}

})

// 手動(dòng)遍歷myObject

var it = myObjectSymbol.iterator;

it.next(); // {value:2布蔗,done: false}

it.next(); // {value:3,done: false}

it.next(); // {undefined浪腐,done: true}

// 用 for..of 遍歷myObject

for(var v of myObject){

console.log(v)

} // 2 // 3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纵揍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子议街,更是在濱河造成了極大的恐慌泽谨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件特漩,死亡現(xiàn)場(chǎng)離奇詭異吧雹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)涂身,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門雄卷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蛤售,你說(shuō)我怎么就攤上這事丁鹉。” “怎么了悴能?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵揣钦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我漠酿,道長(zhǎng)冯凹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任炒嘲,我火速辦了婚禮宇姚,結(jié)果婚禮上团驱,老公的妹妹穿的比我還像新娘。我一直安慰自己空凸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布寸痢。 她就那樣靜靜地躺著呀洲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啼止。 梳的紋絲不亂的頭發(fā)上道逗,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音献烦,去河邊找鬼滓窍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巩那,可吹牛的內(nèi)容都是我干的吏夯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼即横,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼噪生!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起东囚,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤跺嗽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后页藻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桨嫁,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年份帐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了璃吧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弥鹦,死狀恐怖肚逸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情彬坏,我是刑警寧澤朦促,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站栓始,受9級(jí)特大地震影響务冕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幻赚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一禀忆、第九天 我趴在偏房一處隱蔽的房頂上張望臊旭。 院中可真熱鬧,春花似錦箩退、人聲如沸离熏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滋戳。三九已至,卻和暖如春啥刻,著一層夾襖步出監(jiān)牢的瞬間奸鸯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工可帽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娄涩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓映跟,卻偏偏與公主長(zhǎng)得像蓄拣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子努隙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容