1调缨、typeof 運(yùn)算符
該運(yùn)算符用來檢測(cè)基本數(shù)據(jù)類型
1 console.log(typeof("Json"));//string
2 console.log(typeof(2));//number
3 console.log(typeof(true));//boolean
4 console.log(typeof({a:1}));//object
5 console.log(typeof(function(){}));//function
6 console.log(typeof(undefined));//undefined
在ES6之前typeof返回值就是上面列出的六種:string、number吆你、bollean、object俊犯、function妇多、undefined;ES6出來后又增加了一種symbol
console.log(typeof(Symbol()));//symbol
2、indexOf()
該方法用來返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置燕侠。
語法:indexOf(searchvalue,fromindex);兩個(gè)參數(shù)者祖,參數(shù)一表示查詢的字符串值,參數(shù)二可選表示開始查詢的起始位置绢彤,若不寫默認(rèn)從首字符開始查詢
1 var string = "abcdeADhu390u09";
2 console.log(string.indexOf("d"));//3 注意下標(biāo)值從0開始
3 console.log(string.indexOf("D"));//6
上面代碼都只有一個(gè)參數(shù)分別打印出"d"七问、"D"字符串值首次出現(xiàn)的位置,發(fā)現(xiàn)輸出的值不同茫舶,說明indexOf()方法對(duì)大小寫有區(qū)分械巡。
下面這段代碼傳入兩個(gè)參數(shù),根據(jù)前面說的參數(shù)二表示查詢的起始位置饶氏,所以從第五位開始查詢"d"首次出現(xiàn)的位置讥耗,查詢不到返回-1
console.log(string.indexOf("d",4));//-1
indexOf()方法還常用來判斷瀏覽器的類型,其用法如下:
1 if(navigator.userAgent.indexOf("Firefox")>0){
2 return "Firefox";
3 }else if(navigator.userAgent.indexOf("Chrome")>0){
4 return "Chrome";
5 }else if(navigator.userAgent.indexOf("Opera")>0){
6 return "Opera";
7 }
以navigator.userAgent.indexOf("Opera")查詢來講疹启,若打開的瀏覽器是歐朋則返回一個(gè)大于0的值古程,否則返回-1
3、instanceOf
該運(yùn)算符用來檢測(cè)對(duì)象的類型
語法:object instanceof constructor 參數(shù)object表示要檢測(cè)的對(duì)象喊崖,參數(shù)constructor表示某個(gè)構(gòu)造函數(shù)
function Person(){}
var Dave = new Person();
//Object.prototypeOf(Dave)===Person.prototype
console.log(Dave instanceof Person);//true
可以這樣理解:instanceof檢測(cè)constructor.prototype是否存在于參數(shù)object原型鏈上挣磨。若存在返回true
上面說的是較常規(guī)的用法,現(xiàn)在來看看在繼承中的用法
1 function Person(){};
2 function Student(){};
3 Student.prototype = new Person();//js中的原型繼承
4 var Dave = new Student();
5 console.log(Dave instanceof Student);//true
6 console.log(Dave instanceof Person);//true
上面一段代碼判斷Dave是否是Student的實(shí)例荤懂,并且是否是其父類型的實(shí)例
4茁裙、valueOf()
該方法返回Boolean對(duì)象的原始值
語法:booleanObject.valueOf()
1 var boo = new Boolean(true);
2 console.log(boo.valueOf());
補(bǔ)充下與本章不相關(guān)的小知識(shí)點(diǎn):
這里穿插一點(diǎn)"=="與"==="的小知識(shí)點(diǎn)
1 var a = undefined;
2 var b = null;
3 console.log(a==b);//true
4 console.log(a===b);//false
null與undefined在"=="情況下返回true,因?yàn)樗麄兪穷愃频闹担?==="情況下返回false势誊,因?yàn)樗麄儾皇窍嗤愋偷闹怠?/p>
特殊的還有
1 console.log(NaN==NaN);//false
2 console.log(3==NaN);//false
若有一個(gè)操作符是NaN呜达,在"=="情況下返回false,即使兩個(gè)操作數(shù)都是NaN,在"=="情況下也返回false
1 console.log(false==0);//true
2 console.log(true==1);//true
3 console.log(true==2);//false
在操作符為"=="時(shí)粟耻,true與1返回true
1 console.log(null==0);//false
2 console.log(undefined==0);//false