檢測字串
要檢測引數是否是原始字串,請使用 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
或者我們可以利用 Object
的 toString
功能。如果我們必須在 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, );
}