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é)到的幾種方法。