檢測字串

要檢測引數是否是原始字串,請使用 typeof

var aString = "my string";
var anInt = 5;
var anObj = {};
typeof aString === "string";   // true
typeof anInt === "string";     // false
typeof anObj === "string";     // false

如果你有一個 String 物件,通過 new String("somestr"),那麼上面的程式碼將不起作用。在這種情況下,我們可以使用 instanceof

var aStringObj = new String("my string");
aStringObj instanceof String;    // true

要涵蓋這兩個例項,我們可以編寫一個簡單的輔助函式:

var isString = function(value) {
    return typeof value === "string" || value instanceof String;
};

var aString = "Primitive String";
var aStringObj = new String("String Object");
isString(aString); // true
isString(aStringObj); // true
isString({}); // false
isString(5); // false

或者我們可以利用 ObjecttoString 功能。如果我們必須在 switch 語句中檢查其他型別,這可能很有用,因為此方法支援其他資料型別,就像 typeof 一樣。

var pString = "Primitive String";
var oString = new String("Object Form of String");
Object.prototype.toString.call(pString);//"[object String]"
Object.prototype.toString.call(oString);//"[object String]"    

更強大的解決方案是根本不檢測字串,而只檢查所需的功能。例如:

var aString = "Primitive String";
// Generic check for a substring method
if(aString.substring) {

}
// Explicit check for the String substring prototype method
if(aString.substring === String.prototype.substring) {
    aString.substring(0, );
}