2013-05-28 28 views
21

Trong JavaScript, tôi có thể khai báo một chuỗi theo các cách sau;Làm thế nào để "instanceof" một chuỗi nguyên thủy (chuỗi chữ) trong JavaScript

var a = "Hello World"; 
var b = new String("Hello World"); 

nhưng không phải là một thể hiện của String ...

console.log(a instanceof String); //false; 
console.log(b instanceof String); //true; 

Vì vậy, làm thế nào để bạn tìm ra loại hoặc "instanceof" một chuỗi chữ?

JavaScript có thể bị buộc phải tạo new String() cho mỗi chuỗi ký tự không?

Trả lời

46

sử dụng typeof "foo" === "string" thay vì instanceof.

5

Sử dụng typeof thay vào đó và chỉ so sánh chuỗi kết quả. Xem docs để biết chi tiết.

+1

Nó không phải là một phương pháp! – Bergi

+0

Cảm ơn bạn đã liên kết tài liệu; nhưng [instanceof] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof) chỉ thích hợp: "Toán tử instanceof kiểm tra sự hiện diện của constructor.prototype trong chuỗi nguyên mẫu của đối tượng . " – jpaugh

2

Không cần phải viết new String() để tạo ra một chuỗi mới. Khi chúng tôi viết tuyên bố var x = 'test';, nó tạo ra x làm chuỗi từ kiểu dữ liệu nguyên thủy. Chúng tôi không thể đính kèm các thuộc tính tùy chỉnh vào số x như chúng tôi làm với đối tượng theo nghĩa đen. I E. x.custom = 'abc';x.custom sẽ cung cấp giá trị không xác định. Vì vậy, theo nhu cầu của chúng ta, chúng ta cần phải tạo ra đối tượng. new String() sẽ tạo đối tượng với typeof() Đối tượng chứ không phải chuỗi. Chúng ta có thể thêm các thuộc tính tùy chỉnh cho đối tượng này.

Các vấn đề liên quan