一、indexOf()瀏覽器
該方法用來返回某個指定的字符串值在字符串中首次出現的位置。函數
語法:indexOf(searchvalue,fromindex);兩個參數,參數一表示查詢的字符串值,參數二可選表示開始查詢的起始位置,若不寫默認從首字符開始查詢prototype
var string = "abcdeADhu390u09"; console.log(string.indexOf("d"));//3 注意下標值從0開始 console.log(string.indexOf("D"));//6
上面代碼都只有一個參數分別打印出"d"、"D"字符串值首次出現的位置,發現輸出的值不一樣,說明indexOf()方法對大小寫有區分。code
下面這段代碼傳入兩個參數,根據前面說的參數二表示查詢的起始位置,因此從第五位開始查詢"d"首次出現的位置,查詢不到返回-1對象
console.log(string.indexOf("d",4));//\-1
indexOf()方法還經常使用來判斷瀏覽器的類型,其用法以下:繼承
if(navigator.userAgent.indexOf("Firefox")>0) { return "Firefox"; }else if(navigator.userAgent.indexOf("Chrome")>0) { return "Chrome"; }else if(navigator.userAgent.indexOf("Opera")>0){ return "Opera"; }
以navigator.userAgent.indexOf("Opera")查詢來說,若打開的瀏覽器是歐朋則返回一個大於0的值,不然返回-1 原型鏈
二、instanceOf
該運算符用來檢測對象的類型
語法:object instanceof constructor
參數object表示要檢測的對象,參數constructor表示某個構造函數字符串
function Person(){} var Dave = new Person(); //Object.prototypeOf(Dave)===Person.prototype console.log(Dave instanceof Person);//true
能夠這樣理解:
instanceof檢測constructor.prototype是否存在於參數object原型鏈上。
若存在返回true
上面說的是較常規的用法,如今來看看在繼承中的用法原型
function Person(){}; function Student(){}; Student.prototype = new Person();//js中的原型繼承 var Dave = new Student(); console.log(Dave instanceof Student);//true console.log(Dave instanceof Person);//true
上面一段代碼判斷Dave是不是Student的實例,而且是不是其父類型的實例string
三、typeof
該運算符用來檢測基本數據類型
console.log(typeof("Json"));//string console.log(typeof(2));//number console.log(typeof(true));//boolean console.log(typeof({a:1}));//object console.log(typeof(function(){}));//function console.log(typeof(undefined));//undefined
在ES6以前typeof返回值就是上面列出的六種:string、number、bollean、object、function、undefined;
ES6出來後又增長了一種symbol
console.log(typeof(Symbol()));//symbol
四、valueOf()
該方法返回Boolean對象的原始值
語法:booleanObject.valueOf()
var boo = new Boolean(true); console.log(boo.valueOf());
補充下與本章不相關的小知識點:
這裏穿插一點"=="與"==="的小知識點
var a = undefined; var b = null; console.log(a==b);//true console.log(a===b);//false
null與undefined在"=="狀況下返回true,由於他們是相似的值,在"==="狀況下返回false,由於他們不是相同類型的值。
特殊的還有
console.log(NaN==NaN);//false console.log(3==NaN);//false
如有一個操做符是NaN,在"=="狀況下返回false,即便兩個操做數都是NaN,在"=="狀況下也返回false
console.log(false\==0);//true console.log(true\==1);//true console.log(true\==2);//false
在操做符爲"=="時,true與1返回true
console.log(null\==0);//false console.log(undefined==0);//false