Object.prototype.hasOwnProperty()

hasOwnProperty() 方法會(huì)返回一個(gè)布爾值樊诺,指示對(duì)象自身屬性中是否具有指定的屬性(也就是痴奏,是否有指定的鍵)劲妙。

const object1 = {};
object1.property1 = 42;

console.log(object1.hasOwnProperty('property1'));
// expected output: true

console.log(object1.hasOwnProperty('toString'));
// expected output: false

console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false

語(yǔ)法

obj.hasOwnProperty(prop)

參數(shù) prop

要檢測(cè)的屬性的 String 字符串形式表示的名稱掖桦,或者 Symbol限府。

返回值

用來(lái)判斷某個(gè)對(duì)象是否含有指定的屬性的布爾值 Boolean夺颤。

描述

所有繼承了 Object 的對(duì)象都會(huì)繼承到 hasOwnProperty 方法。這個(gè)方法可以用來(lái)檢測(cè)一個(gè)對(duì)象是否含有特定的自身屬性谣殊;和 in 運(yùn)算符不同拂共,該方法會(huì)忽略掉那些從原型鏈上繼承到的屬性。

備注

即使屬性的值是 null 或 undefined姻几,只要屬性存在宜狐,hasOwnProperty 依舊會(huì)返回 true。

o = new Object();
o.propOne = null;
o.hasOwnProperty('propOne'); // 返回 true
o.propTwo = undefined;
o.hasOwnProperty('propTwo'); // 返回 true
示例

使用 hasOwnProperty 方法判斷屬性是否存在

下面的例子檢測(cè)了對(duì)象 o 是否含有自身屬性 prop:

o = new Object();
o.hasOwnProperty('prop'); // 返回 false
o.prop = 'exists';
o.hasOwnProperty('prop'); // 返回 true
delete o.prop;
o.hasOwnProperty('prop'); // 返回 false

自身屬性與繼承屬性

下面的例子演示了 hasOwnProperty 方法對(duì)待自身屬性和繼承屬性的區(qū)別:

o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop');             // 返回 true
o.hasOwnProperty('toString');         // 返回 false
o.hasOwnProperty('hasOwnProperty');   // 返回 false

遍歷一個(gè)對(duì)象的所有自身屬性

下面的例子演示了如何在遍歷一個(gè)對(duì)象的所有屬性時(shí)忽略掉繼承屬性蛇捌,注意這里 for...in 循環(huán)只會(huì)遍歷可枚舉屬性抚恒,所以不應(yīng)該基于這個(gè)循環(huán)中沒(méi)有不可枚舉的屬性而得出 hasOwnProperty 是嚴(yán)格限制于可枚舉項(xiàng)目的(如同 Object.getOwnPropertyNames())。

var buz = {
  fog: 'stack'
};

for (var name in buz) {
  if (buz.hasOwnProperty(name)) {
    console.log('this is fog (' +
      name + ') for sure. Value: ' + buz[name]);
  }
  else {
    console.log(name); // toString or something else
  }
}

使用 hasOwnProperty 作為屬性名

JavaScript 并沒(méi)有保護(hù) hasOwnProperty 這個(gè)屬性名络拌,因此俭驮,當(dāng)某個(gè)對(duì)象可能自有一個(gè)占用該屬性名的屬性時(shí),就需要使用外部的 hasOwnProperty 獲得正確的結(jié)果:

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // 始終返回 false

// 如果擔(dān)心這種情況春贸,
// 可以直接使用原型鏈上真正的 hasOwnProperty 方法
({}).hasOwnProperty.call(foo, 'bar'); // true

// 也可以使用 Object 原型上的 hasOwnProperty 屬性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

注意混萝,只有在最后一種情況下,才不會(huì)新建任何對(duì)象萍恕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逸嘀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子允粤,更是在濱河造成了極大的恐慌崭倘,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件类垫,死亡現(xiàn)場(chǎng)離奇詭異司光,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)悉患,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)残家,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人售躁,你說(shuō)我怎么就攤上這事跪削∏聪桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵碾盐,是天一觀的道長(zhǎng)晃跺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毫玖,這世上最難降的妖魔是什么掀虎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮付枫,結(jié)果婚禮上烹玉,老公的妹妹穿的比我還像新娘。我一直安慰自己阐滩,他們只是感情好二打,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著掂榔,像睡著了一般继效。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上装获,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天瑞信,我揣著相機(jī)與錄音,去河邊找鬼穴豫。 笑死凡简,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的精肃。 我是一名探鬼主播秤涩,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼司抱!你這毒婦竟也來(lái)了筐眷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤状植,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后怨喘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體津畸,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年必怜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肉拓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梳庆,死狀恐怖暖途,靈堂內(nèi)的尸體忽然破棺而出卑惜,到底是詐尸還是另有隱情,我是刑警寧澤驻售,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布露久,位于F島的核電站,受9級(jí)特大地震影響欺栗,放射性物質(zhì)發(fā)生泄漏毫痕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一迟几、第九天 我趴在偏房一處隱蔽的房頂上張望消请。 院中可真熱鬧,春花似錦类腮、人聲如沸臊泰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缸逃。三九已至,卻和暖如春祟偷,著一層夾襖步出監(jiān)牢的瞬間察滑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工修肠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贺辰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓嵌施,卻偏偏與公主長(zhǎng)得像饲化,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吗伤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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