判斷一個(gè)對(duì)象上是否包含 一個(gè)屬性的幾種方法

1丐谋,“!==”進(jìn)行判斷煌珊,返回是布爾值号俐,這種方法很常見,例如:

let  obj = {name:"zhang" , age:20};
obj.name !=== undefined定庵; // true 表示有這個(gè)屬性
obj.sex !=== undefined吏饿;// fasle 表示無 sex 這個(gè)屬性
obj.toString !=== undefined; // true 表示對(duì)象繼承toString屬性

2,in的語(yǔ)法:attr in obj蔬浙;返回是 布爾值猪落,in方法可以檢測(cè)對(duì)象的所有屬性,不管是私有還是公有畴博,只要有都顯示true

'name' in obj笨忌; // true 表示有這個(gè)屬性
'sex'   in obj;// fasle 表示無 sex 這個(gè)屬性
'toString'   in obj; // true 表示對(duì)象繼承toString屬性

in 與上面的undefined效果是一樣的俱病,但是唯一不同點(diǎn)是 in 可以區(qū)分 undefined 的屬性值

let  obj = {value:undefined};
obj.value === undefined;  //true
'value'  in obj ; //true

3, for ... in:判斷一個(gè)屬性是否在對(duì)象上

var obj={ name:‘張學(xué)友’官疲,age:18袱结;}
var isExsit =“name”in obj;// name 沒有加引號(hào)途凫,瀏覽器默認(rèn)為變量垢夹,會(huì)報(bào)錯(cuò),未定義
console.log(isExsit); // true

4维费,hasOwnProperty() 方法 是檢測(cè)對(duì)象是都某一屬性名果元,返回布爾值,這里只能檢測(cè)對(duì)象的私有屬性犀盟,繼承屬性檢測(cè)不出來

let  obj = {name:"zhang" , age:20};
obj.hasOwnProperty(‘name’)而晒; // true 表示有這個(gè)屬性
obj.hasOwnProperty(‘sex’);// fasle 表示無 sex 這個(gè)屬性
obj.hasOwnProperty(‘toString’)且蓬;// fasle 表示沒有繼承這個(gè)屬性

5欣硼,hasPubProperty:用來檢查屬性是否為對(duì)象的公有屬性

function foo() {
  this.name = 'foo'
  this.sayHi = function () {
    console.log('Say Hi')
  }
}

foo.prototype.sayGoodBy = function () {
  console.log('Say Good By')
}

let myPro = new foo()

console.log(myPro.hasOwnProperty('sayHi')) // true
console.log(myPro.hasOwnProperty('sayGoodBy')) // true

6题翰,typeof x恶阴;返回的是它的數(shù)據(jù)類型;
注:typeof-----檢測(cè)數(shù)據(jù)類型作用,不能細(xì)分object下面的對(duì)象豹障,數(shù)組冯事,正則...

 typeof true; //  'boolean'
 typeof "abc"; //'string'
 typeof function() {};// 'function'
 typeof {};//  'object'
 typeof [];// 'object'
 typeof null;//object

7血公,instanceof------即可檢測(cè)是否是當(dāng)前實(shí)例的類昵仅,還可以檢查一個(gè)實(shí)例是否屬于這個(gè)類
注:可以判斷是否是一個(gè)數(shù)組

var arr=new Array;
arr instanceof Array;// true =>是為true累魔,不是為false
var arr=[]
arr instanceof Array; // true =>是為true摔笤,不是為false

8,includes():

var name = "王漢炎";    //目標(biāo)字符串
name.includes('炎');   //  true垦写;返回的是一個(gè)布爾值

search(keywords) {
    return this.list.filter(item => {
       if (item.name.includes(keywords)) {// 判斷是否包含吕世,包含 true,不包含 false
          return item
        }
   })
}

9梯投,indexof():返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置命辖。
stringObject.indexOf(searchvalue,fromindex)

searchvalue:必需。規(guī)定需檢索的字符串值
fromindex:可選分蓖;規(guī)定在字符串中開始檢索的位置尔艇。它的合法取值是 0 到 stringObject.length - 1。如省略該參數(shù)么鹤,則將從字符串的首字符開始檢索终娃。

var nameList = ['A', 'B', 'C', 'D', 'E', 'F'];    //目標(biāo)字符串
nameList .indexOf('C') > -1;   //  true;返回的是一個(gè)布爾值

* indexOf() 方法對(duì)大小寫敏感蒸甜!
* 如果要檢索的字符串值沒有出現(xiàn)尝抖,則該方法返回 -1毡们。

10,isPrototypeOf():檢測(cè)一個(gè)對(duì)象是否是另一個(gè)對(duì)象的原型昧辽⊙萌郏或者說一個(gè)對(duì)象是否被包含在另一個(gè)對(duì)象的原型鏈中

var p = {x:1};//定義一個(gè)原型對(duì)象
var o = Object.create(p);//使用這個(gè)原型創(chuàng)建一個(gè)對(duì)象
p.isPrototypeOf(o);//=>true:o繼承p
Object.prototype.isPrototypeOf(p);//=> true p繼承自O(shè)bject.prototype

11,【ES6】for of :
for in遍歷的是數(shù)組的索引(即鍵名)搅荞,而for of遍歷的是數(shù)組元素值红氯。

// 示例 一:
var arr = ['nick','freddy','mike','james'];
for(var item of arr){   
    console.log(item); // nick,freddy咕痛,mike痢甘,james,undefined  遍歷數(shù)組中的每一項(xiàng)
}

// 示例二:
var arr = [
    { name:'nick', age:18 },
    { name:'freddy', age:24 },
    { name:'mike', age:26 },
    { name:'james', age:34 }
];
for(var item of arr){   
    console.log(item.name,item.age);
}
// 'nick',18
// 'freddy',24
// 'mike',26
// 'james',34
// undefined

與 for in 的區(qū)別
1茉贡,for in可以遍歷對(duì)象塞栅,for of無法循環(huán)遍歷對(duì)象,

var userMsg = {
    0: 'nick', 1: 'freddy', 2: 'mike', 3: 'james'
};
 
for(var key in userMsg){
    console.log(key, userMsg[key]); 
}
// 0: 'nick'
// 1: 'freddy'
// 2: 'mike'
// 3: 'james'

for(var item of userMsg){   
    console.log(item);// TypeError: userMsg is not iterable
}

2, 遍歷輸出結(jié)果不同

var arr = ['nick','freddy','mike','james'];
for(var key in arr){
    console.log(key);   // 0 1 2 3 返回索引值
}

for(var item of arr){   
    console.log(item);// nick,freddy腔丧,mike放椰,james
}

3, for in 會(huì)遍歷所有自定義屬性,for of不會(huì)遍歷新加的屬性

var arr = ['nick','freddy','mike','james'];
arr.name = "數(shù)組";
 
for(var key in arr){
    console.log(key+': '+arr[key]); 
}
// 0: nick
// 1: freddy
// 2: mike
// 3: james
// name: 數(shù)組

for(var item of arr){   
    console.log(item);//  nick愉粤,freddy砾医,mike,james
}

4, for of 可以正確響應(yīng)break衣厘、continue和return語(yǔ)句如蚜,但是for in 不行

以上的幾種方法就是我暫時(shí)學(xué)到的幾種方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末影暴,一起剝皮案震驚了整個(gè)濱河市错邦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌型宙,老刑警劉巖撬呢,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異早歇,居然都是意外死亡倾芝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門箭跳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晨另,“玉大人,你說我怎么就攤上這事谱姓〗枘颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)路翻。 經(jīng)常有香客問我狈癞,道長(zhǎng),這世上最難降的妖魔是什么茂契? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任蝶桶,我火速辦了婚禮,結(jié)果婚禮上掉冶,老公的妹妹穿的比我還像新娘真竖。我一直安慰自己,他們只是感情好厌小,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布恢共。 她就那樣靜靜地躺著,像睡著了一般璧亚。 火紅的嫁衣襯著肌膚如雪讨韭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天癣蟋,我揣著相機(jī)與錄音透硝,去河邊找鬼。 笑死梢薪,一個(gè)胖子當(dāng)著我的面吹牛蹬铺,可吹牛的內(nèi)容都是我干的尝哆。 我是一名探鬼主播秉撇,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秋泄!你這毒婦竟也來了琐馆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恒序,失蹤者是張志新(化名)和其女友劉穎瘦麸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歧胁,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滋饲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喊巍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屠缭。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崭参,靈堂內(nèi)的尸體忽然破棺而出呵曹,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布奄喂,位于F島的核電站铐殃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跨新。R本人自食惡果不足惜富腊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望域帐。 院中可真熱鬧蟹肘,春花似錦、人聲如沸俯树。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)许饿。三九已至阳欲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陋率,已是汗流浹背球化。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓦糟,地道東北人筒愚。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像菩浙,于是被迫代替她去往敵國(guó)和親巢掺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

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