Để phát hiện xem một tham số có phải là một chuỗi nguyên thủy hay không, hãy sử dụng typeof :
var aString = "my string";
var anInt = 5;
var anObj = {};
typeof aString === "string"; typeof anInt === "string"; typeof anObj === "string"; |
// true // false // false |
Nếu bạn đã từng có một đối tượng Chuỗi, thông qua Chuỗi mới ("somestr"), thì cách trên sẽ không hoạt động. Trong trường hợp này, chúng ta có thể sử dụng instanceof:
var aStringObj = new String("my string");
aStringObj instanceof String; // true
Để bao gồm cả hai trường hợp, chúng ta có thể viết một hàm trợ giúp đơn giản:
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
Hoặc chúng ta có thể sử dụng hàm toString của Object. Điều này có thể hữu ích nếu chúng ta phải kiểm tra các kiểu khác cũng như nói trong câu lệnh switch, vì phương thức này hỗ trợ các kiểu dữ liệu khác cũng giống như 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]"
Một giải pháp mạnh mẽ hơn là hoàn toàn không phát hiện một chuỗi, thay vào đó chỉ kiểm tra xem chức năng nào được yêu cầu. Ví dụ:
var aString = "Primitive String";
// Kiểm tra chung cho một phương pháp chuỗi con
if(aString.substring) {
}
// Kiểm tra rõ ràng cho phương thức nguyên mẫu chuỗi con
if(aString.substring === String.prototype.substring) {
aString.substring(0, );
}
Tham khảo GoalKicker.com
Dịch: Devmaster Academy