new Boolean() tạo một đối tượng Boolean (Boolean object) – một wrapper object bao quanh giá trị nguyên thủy true hoặc false. Khác với giá trị nguyên thủy true/false, đối tượng này có kiểu object và có các phương thức.
Cú pháp
var boolObj = new Boolean(value);
Giá trị ban đầu
Đối tượng có giá trị false nếu value là một trong các giá trị falsy:
0,-0nullundefinedNaN""(chuỗi rỗng)false- Tham số bị bỏ qua
Ngược lại, đối tượng có giá trị true (kể cả new Boolean(false) là truthy trong điều kiện!).
Ví dụ
<script>
var flag = new Boolean(false);
console.log(flag); // Boolean { false }
console.log(typeof flag); // "object"
console.log(flag.toString()); // "false"
// CẢNH BÁO: Đối tượng Boolean luôn truthy!
if (flag) {
console.log("Chạy vào đây vì object luôn truthy");
}
// So sánh với primitive
var primitive = false;
if (primitive) {
console.log("Không chạy");
}
</script>
Phương thức phổ biến
toString(): Trả về"true"hoặc"false"(chuỗi).valueOf(): Trả về giá trị nguyên thủytrue/false.
Khi nào nên dùng?
Hầu như không bao giờ. Trong thực tế, luôn dùng giá trị nguyên thủy true/false hoặc ép kiểu Boolean(value) (không dùng new).
Sự khác biệt quan trọng
// Primitive boolean
typeof true; // "boolean"
true instanceof Object; // false
// Boolean object
typeof new Boolean(true); // "object"
new Boolean(true) instanceof Object; // true
new Boolean(true) === true; // false (so sánh reference)
new Boolean(true) == true; // true (ép kiểu)
Tóm tắt
new Boolean()tạo object, không phải primitive.- Object luôn truthy trong điều kiện
if, kể cả khi giá trị bên trong làfalse. - Ưu tiên dùng
Boolean(value)(hàm chuyển đổi) hoặc toán tử!!value.