if (someObject.member && someObject.member.member &&
someObject.member.member.member && someObject.member.member.member.value) ...
hoặc tương tự:
var val = foo.bar && foo.bar.jim && foo.bar.jim.jam && foo.bar.jim.jam.value;
này sẽ không 'làm việc' nếu có giá trị cụ thể sẽ xảy ra là null
, false
, 0
hoặc ""
(một chuỗi trống), nhưng với ngoại lệ có thể có của giá trị cuối cùng, điều này có vẻ như không xảy ra.
Ngoài ra, lưu ý rằng typeof ____ !== "undefined"
không phải là thử nghiệm chính xác để xem một đối tượng có thuộc tính hay không. Thay vào đó, bạn nên sử dụng ___ in object
, ví dụ: if ("member" in someObject)
. Điều này là do bạn có thể đặt thuộc tính thành giá trị rõ ràng là undefined
, khác với việc xóa nó với delete someObject.member
.
Có vẻ ổn. Tôi thích cách tiếp cận vòng lặp, nhưng làm thế nào để __typeof obj === "đối tượng" __ giúp chính xác? Có đúng là typeof có thể trả về đối tượng cho null và mảng không? – JustcallmeDrago
@JustcallmeDrago: True ... sẽ không quan trọng quá nhiều đối với mảng mặc dù, nhưng nó sẽ thất bại cho 'null'. Vì vậy, nó có lẽ là tốt hơn để thêm một kiểm tra cho null là tốt. Tôi đã thêm bài kiểm tra vì ''value' trong' sẽ ném một lỗi. Đã thêm kiểm tra 'null'. –
@Felix: Tôi hiểu rồi. Tôi thực sự thích chuỗi như một đối số, nhưng cũng là sự đơn giản của câu trả lời của Patrick. Anh ấy có an toàn như bạn không? Có nhanh không? – JustcallmeDrago